[Duda]Codigo que cierra samp-server
#1

Buenas , nose porque pero al usar un item de mi inventario cierra el samp-server

pawn Код:
if(!strcmp(ItemName,"Pildora Pequeсa",true))
    {
        if(DatosPJ[playerid][SPerk] == 8)
        {
            new id = -1;
            static Float:x,Float:y,Float:z;
            foreach( new i:Player)
            {
                if(!IsPlayerConnected(i)) continue;
                if(Equipo[i] == 2) continue;
                GetPlayerPos(playerid,x,y,z);
                if(!IsPlayerInRangeOfPoint(i,2.0,x,y,z)) continue;
                if(i == playerid) continue;
                id = i;
            }
            if(id == -1) return SendClientMessage(playerid,blanco,"» "crojo"No estas cerca de un humano!");
            new Float:health;
            GetPlayerHealth(id,health);
            if(health >= 100.0) return SendClientMessage(playerid,blanco,"* "crojo"Este jugador no necesita ayuda.");
            SetPlayerHealth(id,health+8.0);
            format(string,sizeof string,""crosado"%s ha asistido a %s con una pildora pequela.",Nombre(playerid),Nombre(id));
            MensajeCercano(playerid,blanco,string,20);
            GetPlayerHealth(id,health);
            if(health > 100.0) SetPlayerHealth(id,100.0);
        }
        else
        {
            RemoveItem(playerid,"Pildora Pequeсa",1);
            format(string,sizeof string,""crosado"%s ha tomado una pildora pequeсa.",Nombre(playerid));
            MensajeCercano(playerid,blanco,string,20);
            new Float:health;
            GetPlayerHealth(playerid,health);
            if(DatosPJ[playerid][SPerk] != 2) SetPlayerHealth(playerid,health+3.0);
            else SetPlayerHealth(playerid,health+8.0);
        }
    }
Reply
#2

Hay un pequeсo truco para cuando tengas este tipo de problemas y no puedas localizarlos.
Mira, sustituye el cуdigo que has posteado por este:

pawn Код:
if(!strcmp(ItemName,"Pildora Pequeсa",true))
{
    print("Parte 1");
    if(DatosPJ[playerid][SPerk] == 8)
    {
        print("Parte 2");
        new id = -1;
        static Float:x,Float:y,Float:z;
        foreach( new i:Player)
        {
            if(!IsPlayerConnected(i)) continue;
            if(Equipo[i] == 2) continue;
            GetPlayerPos(playerid,x,y,z);
            if(!IsPlayerInRangeOfPoint(i,2.0,x,y,z)) continue;
            if(i == playerid) continue;
            id = i;
        }
        print("Parte 3");
        if(id == -1) return SendClientMessage(playerid,blanco,"» "crojo"No estas cerca de un humano!");
        new Float:health;
        GetPlayerHealth(id,health);
        if(health >= 100.0) return SendClientMessage(playerid,blanco,"* "crojo"Este jugador no necesita ayuda.");
        print("Parte 4");
        SetPlayerHealth(id,health+8.0);
        format(string,sizeof string,""crosado"%s ha asistido a %s con una pildora pequela.",Nombre(playerid),Nombre(id));
        MensajeCercano(playerid,blanco,string,20);
        GetPlayerHealth(id,health);
        if(health > 100.0) SetPlayerHealth(id,100.0);
        print("Parte 5");
    }
    else
    {
        print("Parte 6");
        RemoveItem(playerid,"Pildora Pequeсa",1);
        format(string,sizeof string,""crosado"%s ha tomado una pildora pequeсa.",Nombre(playerid));
        MensajeCercano(playerid,blanco,string,20);
        print("Parte 7");
        new Float:health;
        GetPlayerHealth(playerid,health);
        if(DatosPJ[playerid][SPerk] != 2) SetPlayerHealth(playerid,health+3.0);
        else SetPlayerHealth(playerid,health+8.0);
        print("Parte 8");
    }
    print("Parte 9");
}
Cuando lo tengas, compнlalo, pruйbalo ingame y posteas el log del servidor de esa sesiуn. Es un truquito para localizar cuбl es la ъltima parte de cуdigo que se ejecuta antes de que el servidor falle
Reply
#3

Gracias

Код:
[16:32:45] Number of vehicle models: 0
[16:33:06] Incoming connection: 127.10.0.0:1041
[16:33:07] [join] xeon has joined the server (0:127.10.0.0)
[16:33:22] Parte 1
[16:33:22] Parte 6
La parte 2,3,4,5 no se ejecutan porque esa parte es solo para medicos ( osea curar a otro player ) y sinceramente no veo ningun error del 6 hacia arriba
Reply
#4

puede que el problema este dentro de la funcion RemoveItem.

pasa el code.
Reply
#5

Uso el include j_inventory_v2 el cual trae esa funcion pero bytytus no creo porque sino me pasaria lo mismo con la pildora grande y la pildora mediana , pero solo me pasa con la pildora pequeсa
Reply
#6

No estoy del todo seguro (si estб correcto como йl lo tiene, corregidme), pero el ъnico parбmetro del operador sizeof debe ir entre parйntesis.

Es decir, donde pongas:
pawn Код:
,sizeof string,
Deberнa ir:
pawn Код:
,sizeof(string),
Lo que estб claro es que el problema estб en las tres funciones entre la parte 6 y la 7. Tambiйn podrнas revisar la funciуn Nombre y MensajeCercano (o dбrnoslas para que las revisemos).
Reply
#7

Intenta quitando la "с".

No se si las с's no estan permitidas ni tampoco se script. Pero intentalo.
Eso es lo mas logico para mi.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)