mirror of
https://git.muiegratis.online/suikoakari/Campofinale
synced 2025-12-13 18:14:34 +01:00
new types
This commit is contained in:
@@ -297,7 +297,7 @@ namespace Campofinale.Game
|
|||||||
public void Load()
|
public void Load()
|
||||||
{
|
{
|
||||||
if (info().isSeamless && alreadyLoaded) return;
|
if (info().isSeamless && alreadyLoaded) return;
|
||||||
alreadyLoaded = true;
|
//alreadyLoaded = true;
|
||||||
Unload();
|
Unload();
|
||||||
LevelScene lv_scene = ResourceManager.GetLevelData(sceneNumId);
|
LevelScene lv_scene = ResourceManager.GetLevelData(sceneNumId);
|
||||||
|
|
||||||
@@ -345,6 +345,7 @@ namespace Campofinale.Game
|
|||||||
levelLogicId = en.levelLogicId,
|
levelLogicId = en.levelLogicId,
|
||||||
|
|
||||||
};
|
};
|
||||||
|
entity.defaultHide=en.defaultHide;
|
||||||
entities.Add(entity);
|
entities.Add(entity);
|
||||||
});
|
});
|
||||||
lv_scene.levelData.npcs.ForEach(en =>
|
lv_scene.levelData.npcs.ForEach(en =>
|
||||||
@@ -381,6 +382,7 @@ namespace Campofinale.Game
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SpawnEntity(Entity en,bool spawnedCheck=true)
|
public void SpawnEntity(Entity en,bool spawnedCheck=true)
|
||||||
{
|
{
|
||||||
if (!activeScripts.Contains(en.belongLevelScriptId) && en.defaultHide && en.belongLevelScriptId != 0)
|
if (!activeScripts.Contains(en.belongLevelScriptId) && en.defaultHide && en.belongLevelScriptId != 0)
|
||||||
@@ -404,8 +406,12 @@ namespace Campofinale.Game
|
|||||||
{
|
{
|
||||||
if(e.spawned==false && (activeScripts.Contains(e.belongLevelScriptId) || e.belongLevelScriptId==0))
|
if(e.spawned==false && (activeScripts.Contains(e.belongLevelScriptId) || e.belongLevelScriptId==0))
|
||||||
{
|
{
|
||||||
toSpawn.Add(e);
|
if (!e.defaultHide)
|
||||||
e.spawned= true;
|
{
|
||||||
|
toSpawn.Add(e);
|
||||||
|
e.spawned = true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -445,7 +451,14 @@ namespace Campofinale.Game
|
|||||||
{
|
{
|
||||||
return Server.clients.Find(c => c.roleId == ownerId);
|
return Server.clients.Find(c => c.roleId == ownerId);
|
||||||
}
|
}
|
||||||
|
public void SpawnEnemyByScriptId(ulong id)
|
||||||
|
{
|
||||||
|
GetEntityExcludingChar().FindAll(e => e.belongLevelScriptId == id).ForEach(e =>
|
||||||
|
{
|
||||||
|
e.spawned = true;
|
||||||
|
});
|
||||||
|
GetOwner().Send(new PacketScObjectEnterView(GetOwner(), GetEntityExcludingChar().FindAll(e => e.belongLevelScriptId == id)));
|
||||||
|
}
|
||||||
public void SpawnEnemy(ulong v)
|
public void SpawnEnemy(ulong v)
|
||||||
{
|
{
|
||||||
LevelScene lv_scene = ResourceManager.GetLevelData(sceneNumId);
|
LevelScene lv_scene = ResourceManager.GetLevelData(sceneNumId);
|
||||||
@@ -462,5 +475,7 @@ namespace Campofinale.Game
|
|||||||
SpawnEntity(entity);
|
SpawnEntity(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ namespace Campofinale.Packets.Cs
|
|||||||
session.AddCharacter("chr_0003_endminf", true);
|
session.AddCharacter("chr_0003_endminf", true);
|
||||||
session.RemoveCharacter("chr_0002_endminm");
|
session.RemoveCharacter("chr_0002_endminm");
|
||||||
}
|
}
|
||||||
|
|
||||||
session.teamIndex = 0;
|
session.teamIndex = 0;
|
||||||
session.teams[0].leader = session.chars[0].guid;
|
session.teams[0].leader = session.chars[0].guid;
|
||||||
session.teams[0].members = new() { session.chars[0].guid };
|
session.teams[0].members = new() { session.chars[0].guid };
|
||||||
@@ -129,7 +130,8 @@ namespace Campofinale.Packets.Cs
|
|||||||
session.Send(new PacketScSyncBaseData(session));
|
session.Send(new PacketScSyncBaseData(session));
|
||||||
session.Send(ScMsgId.ScSceneClientIdInfo, new ScSceneClientIdInfo()
|
session.Send(ScMsgId.ScSceneClientIdInfo, new ScSceneClientIdInfo()
|
||||||
{
|
{
|
||||||
|
RoleIdx=6,
|
||||||
|
LastMaxIdx=session.random.v
|
||||||
});
|
});
|
||||||
session.Send(new PacketScItemBagScopeSync(session, ItemValuableDepotType.Weapon));
|
session.Send(new PacketScItemBagScopeSync(session, ItemValuableDepotType.Weapon));
|
||||||
session.Send(new PacketScItemBagScopeSync(session, ItemValuableDepotType.WeaponGem));
|
session.Send(new PacketScItemBagScopeSync(session, ItemValuableDepotType.WeaponGem));
|
||||||
|
|||||||
22
Campofinale/Packets/Cs/HandleCsSceneSetBattle.cs
Normal file
22
Campofinale/Packets/Cs/HandleCsSceneSetBattle.cs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
using Campofinale.Network;
|
||||||
|
using Campofinale.Protocol;
|
||||||
|
|
||||||
|
namespace Campofinale.Packets.Cs
|
||||||
|
{
|
||||||
|
public class HandleCsSceneSetBattle
|
||||||
|
{
|
||||||
|
|
||||||
|
[Server.Handler(CsMsgId.CsSceneSetBattle)]
|
||||||
|
public static void Handle(Player session, CsMsgId cmdId, Packet packet)
|
||||||
|
{
|
||||||
|
CsSceneSetBattle req = packet.DecodeBody<CsSceneSetBattle>();
|
||||||
|
|
||||||
|
ScSceneSetBattle rsp = new()
|
||||||
|
{
|
||||||
|
InBattle = req.InBattle,
|
||||||
|
};
|
||||||
|
session.Send(ScMsgId.ScSceneSetBattle, rsp);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ using Campofinale.Protocol;
|
|||||||
using Campofinale.Resource;
|
using Campofinale.Resource;
|
||||||
using Campofinale.Resource.Table;
|
using Campofinale.Resource.Table;
|
||||||
using Pastel;
|
using Pastel;
|
||||||
|
using System.Net.Sockets;
|
||||||
using static Campofinale.Resource.ResourceManager.LevelScene.LevelData;
|
using static Campofinale.Resource.ResourceManager.LevelScene.LevelData;
|
||||||
|
|
||||||
namespace Campofinale.Packets.Cs
|
namespace Campofinale.Packets.Cs
|
||||||
@@ -26,13 +27,17 @@ namespace Campofinale.Packets.Cs
|
|||||||
State = 3
|
State = 3
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
session.Send(ScMsgId.ScSceneLevelScriptStateNotify, rsp);
|
|
||||||
if (!session.sceneManager.GetCurScene().activeScripts.Contains(req.ScriptId))
|
if (!session.sceneManager.GetCurScene().activeScripts.Contains(req.ScriptId))
|
||||||
{
|
{
|
||||||
session.sceneManager.GetCurScene().activeScripts.Add(req.ScriptId);
|
session.sceneManager.GetCurScene().activeScripts.Add(req.ScriptId);
|
||||||
session.sceneManager.GetCurScene().UpdateShowEntities();
|
session.sceneManager.GetCurScene().UpdateShowEntities();
|
||||||
}
|
}
|
||||||
|
session.Send(ScMsgId.ScSceneLevelScriptStateNotify, rsp);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,13 +59,25 @@ namespace Campofinale.Packets.Cs
|
|||||||
State = 4
|
State = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
session.Send(ScMsgId.ScSceneLevelScriptStateNotify, rsp,packet.csHead.UpSeqid);
|
session.Send(ScMsgId.ScSceneLevelScriptStateNotify, rsp, packet.csHead.UpSeqid);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ScSceneLevelScriptStateNotify rsp = new ScSceneLevelScriptStateNotify()
|
||||||
|
{
|
||||||
|
SceneNumId = req.SceneNumId,
|
||||||
|
ScriptId = req.ScriptId,
|
||||||
|
|
||||||
|
State = 4
|
||||||
|
};
|
||||||
|
|
||||||
|
session.Send(ScMsgId.ScSceneLevelScriptStateNotify, rsp, packet.csHead.UpSeqid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ExecuteEventAction(Player player, ScriptAction action)
|
public static void ExecuteEventAction(Player player, ScriptAction action, CsSceneLevelScriptEventTrigger req)
|
||||||
{
|
{
|
||||||
switch (action.action)
|
switch (action.action)
|
||||||
{
|
{
|
||||||
@@ -71,7 +88,17 @@ namespace Campofinale.Packets.Cs
|
|||||||
player.missionSystem.ProcessQuest(action.valueStr[0]);
|
player.missionSystem.ProcessQuest(action.valueStr[0]);
|
||||||
break;
|
break;
|
||||||
case ScriptActionType.SpawnEnemy:
|
case ScriptActionType.SpawnEnemy:
|
||||||
player.sceneManager.GetCurScene().SpawnEnemy(action.valueUlong[0]);
|
foreach (ulong id in action.valueUlong)
|
||||||
|
{
|
||||||
|
player.sceneManager.GetCurScene().SpawnEnemy(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case ScriptActionType.SpawnEnemyByScriptId:
|
||||||
|
foreach(ulong id in action.valueUlong)
|
||||||
|
{
|
||||||
|
player.sceneManager.GetCurScene().SpawnEnemyByScriptId(id);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case ScriptActionType.UnlockSystem:
|
case ScriptActionType.UnlockSystem:
|
||||||
UnlockSystemType type = (UnlockSystemType)Enum.Parse(typeof(UnlockSystemType), action.valueStr[0]);
|
UnlockSystemType type = (UnlockSystemType)Enum.Parse(typeof(UnlockSystemType), action.valueStr[0]);
|
||||||
@@ -83,6 +110,19 @@ namespace Campofinale.Packets.Cs
|
|||||||
case ScriptActionType.AddMission:
|
case ScriptActionType.AddMission:
|
||||||
player.missionSystem.AddMission(action.valueStr[0]);
|
player.missionSystem.AddMission(action.valueStr[0]);
|
||||||
break;
|
break;
|
||||||
|
case ScriptActionType.CallClientEvent:
|
||||||
|
foreach(string id in action.valueStr)
|
||||||
|
{
|
||||||
|
ScSceneTriggerClientLevelScriptEvent trigger = new()
|
||||||
|
{
|
||||||
|
EventName = id,
|
||||||
|
SceneNumId = req.SceneNumId,
|
||||||
|
ScriptId = req.ScriptId,
|
||||||
|
};
|
||||||
|
|
||||||
|
player.Send(ScMsgId.ScSceneTriggerClientLevelScriptEvent, trigger);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case ScriptActionType.CompleteMission:
|
case ScriptActionType.CompleteMission:
|
||||||
//player.missionSystem.C(action.valueStr[0]);
|
//player.missionSystem.C(action.valueStr[0]);
|
||||||
break;
|
break;
|
||||||
@@ -104,7 +144,7 @@ namespace Campofinale.Packets.Cs
|
|||||||
Logger.Print($"{levelScriptEvent.comment}");
|
Logger.Print($"{levelScriptEvent.comment}");
|
||||||
levelScriptEvent.actions.ForEach(a =>
|
levelScriptEvent.actions.ForEach(a =>
|
||||||
{
|
{
|
||||||
ExecuteEventAction(session, a);
|
ExecuteEventAction(session, a,req);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -130,15 +170,8 @@ namespace Campofinale.Packets.Cs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
session.Send(ScMsgId.ScSceneUpdateLevelScriptProperty, update1);
|
session.Send(ScMsgId.ScSceneUpdateLevelScriptProperty, update1);
|
||||||
/*ScSceneTriggerClientLevelScriptEvent trigger = new()
|
|
||||||
{
|
|
||||||
EventName = req.EventName,
|
|
||||||
SceneNumId = req.SceneNumId,
|
|
||||||
ScriptId = req.ScriptId,
|
|
||||||
|
|
||||||
};
|
/*ScSceneUpdateLevelScriptProperty update2 = new()
|
||||||
session.Send(ScMsgId.ScSceneTriggerClientLevelScriptEvent, trigger);
|
|
||||||
ScSceneUpdateLevelScriptProperty update2 = new()
|
|
||||||
{
|
{
|
||||||
SceneNumId = req.SceneNumId,
|
SceneNumId = req.SceneNumId,
|
||||||
ScriptId = req.ScriptId,
|
ScriptId = req.ScriptId,
|
||||||
|
|||||||
@@ -29,5 +29,7 @@ namespace Campofinale.Resource.Table
|
|||||||
EnterScene = 5,
|
EnterScene = 5,
|
||||||
AddMission = 6,
|
AddMission = 6,
|
||||||
CompleteMission = 7,
|
CompleteMission = 7,
|
||||||
|
SpawnEnemyByScriptId = 8,
|
||||||
|
CallClientEvent = 9
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user