Ну так ищи в чем причина краша сервера с YSF при подключении нового игрока. Ищи и исправляй. В чем проблема? Нет проблемы.
|
#include <a_samp>
#include <YSF>
#include <streamer>
main(){}
forward UpdateHealthEx();
new po_health[MAX_PLAYERS];
public OnGameModeInit()
{
SetTimer("UpdateHealthEx", 1000, true);
return 1;
}
public OnPlayerConnect(playerid)
{
po_health[playerid] = INVALID_OBJECT_ID;
return 1;
}
public OnPlayerSpawn(playerid)
{
po_health[playerid] = INVALID_OBJECT_ID;
if(po_health[playerid] == INVALID_OBJECT_ID)
po_health[playerid] = CreateDynamicObject(19475, -100.0, -100.0, -100.0, 0.0, 0.0, 0.0);
SetPVarInt(playerid, "spawned", 1);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
SetPVarInt(playerid, "spawned", 0);
if(po_health[playerid] != INVALID_OBJECT_ID)
DestroyDynamicObject(po_health[playerid]);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SetPVarInt(playerid, "spawned", 0);
if(po_health[playerid] != INVALID_OBJECT_ID)
DestroyDynamicObject(po_health[playerid]);
return 1;
}
public UpdateHealthEx()
{
for(new p = 0, all = (GetMaxPlayers()+1); p != all; p++)
{
if(IsPlayerConnected(p) && !IsPlayerNPC(p) && GetPVarInt(p, "spawned") == 1) UpdateHealth(p);
}
return false;
}
stock UpdateHealth(const playerid)
{
new Float: health, string[20];
GetPlayerHealth(playerid, health);
format(string, sizeof(string), "{ffffff}+%.0f", health);
SetDynamicObjectMaterialText(po_health[playerid], 0, string, 90, "Arial", 70, 1, -16776961, 0, 0);
AttachDynamicObjectToPlayer(po_health[playerid], playerid, -0.4000, -0.6, -0.5, 0.00000, -90.00000, 180.00000);
return 0;
}
public OnPlayerSpawn(playerid)
{
po_health[playerid] = INVALID_OBJECT_ID;
if(po_health[playerid] == INVALID_OBJECT_ID)
po_health[playerid] = CreateDynamicObject(19475, -100.0, -100.0, -100.0, 0.0, 0.0, 0.0);
SetPVarInt(playerid, "spawned", 1);
return 1;
}
Не по теме, но
PHP код:
|
#include <a_samp>
#include <YSF>
#include <streamer>
main(){}
forward UpdateHealthEx();
new po_health[MAX_PLAYERS];
public OnGameModeInit()
{
SetTimer("UpdateHealthEx", 1000, true);
return 1;
}
public OnPlayerConnect(playerid)
{
po_health[playerid] = INVALID_OBJECT_ID;
return 1;
}
public OnPlayerSpawn(playerid)
{
po_health[playerid] = CreateDynamicObject(19475, -100.0, -100.0, -100.0, 0.0, 0.0, 0.0);
SetPVarInt(playerid, "spawned", 1);
GivePlayerWeapon(playerid, WEAPON_M4, 250);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
SetPVarInt(playerid, "spawned", 0);
if(po_health[playerid] != INVALID_OBJECT_ID)
{
DestroyDynamicObject(po_health[playerid]);
po_health[playerid] = INVALID_OBJECT_ID;
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SetPVarInt(playerid, "spawned", 0);
if(po_health[playerid] != INVALID_OBJECT_ID)
{
DestroyDynamicObject(po_health[playerid]);
}
return 1;
}
public UpdateHealthEx()
{
for(new p = 0, all = (GetMaxPlayers()+1); p != all; p++)
{
if(IsPlayerConnected(p) && !IsPlayerNPC(p) && GetPVarInt(p, "spawned") == 1) UpdateHealth(p);
}
return false;
}
stock UpdateHealth(const playerid)
{
new Float: health, string[20];
GetPlayerHealth(playerid, health);
format(string, sizeof(string), "{ffffff}+%.0f", health);
SetDynamicObjectMaterialText(po_health[playerid], 0, string, 90, "Arial", 70, 1, -16776961, 0, 0);
AttachDynamicObjectToPlayer(po_health[playerid], playerid, -0.4000, -0.6, -0.5, 0.00000, -90.00000, 180.00000);
return 0;
}