SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 29/12/2019, 06:18 PM   #1
Syxh0wN
Big Clucker
 
Syxh0wN's Avatar
 
Join Date: Nov 2013
Location: San Andreas
Posts: 169
Reputation: 6
Default Iter_Remove

Alguem poderia me ajudar?

quando eu uso essa função em OnPlayerDisconnect o jogador não desconecta do servidor e fica travado..

pawn Code:
VehicleRemove(vid)
{
    Iter_SafeRemove(Vehicles, vid, vid);
    // Iter_Remove(Vehicles, vid); // ja tentei também
    return 1;
}
Syxh0wN is offline   Reply With Quote
Old 29/12/2019, 06:38 PM   #2
PT
Godfather
 
PT's Avatar
 
Join Date: Nov 2012
Location: Europe
Posts: 7,168
Reputation: 802
Default Re: Iter_Remove

isso e para remover o foreach mas vc tem de destruir o carro com o DestroyVehicle para tirar ele fisicamente
PT is offline   Reply With Quote
Old 29/12/2019, 06:52 PM   #3
Syxh0wN
Big Clucker
 
Syxh0wN's Avatar
 
Join Date: Nov 2013
Location: San Andreas
Posts: 169
Reputation: 6
Question Re: Iter_Remove

Quote:
Originally Posted by PT View Post
isso e para remover o foreach mas vc tem de destruir o carro com o DestroyVehicle para tirar ele fisicamente
eu sei, mas essa função ta travando quando ela é usada, não é só em Disconnect

pawn Code:
VehicleRemove(vid)
{
    DestroyVehicle(vid);
    Iter_SafeRemove(Vehicles, vid, vid);
    return 1;
}

Eu usei isso em um comando, o veículo é destruido normal, mas essa função de remover tá travando o servidor

YSI que estou usando é o ultimo 5.1
https://github.com/pawn-lang/YSI-Inc...eases/tag/v5.1

@Edit Usei CrashDetected e não detectou nenhum erro
Syxh0wN is offline   Reply With Quote
Old 29/12/2019, 07:03 PM   #4
Malandrin
Huge Clucker
 
Malandrin's Avatar
 
Join Date: Jun 2018
Posts: 407
Reputation: 23
Default Re: Iter_Remove

Se não me engano, não é necessário fazer isso para a Vehicle pois ela remove automaticamente, isso serve também para a Player. Posso estar falando merda, mas faz um teste ae.

Ah, e a variável que vem por padrão do YSI é a Vehicle sem o S... Faz um teste com ela e vê se resolve.
Malandrin is offline   Reply With Quote
Old 29/12/2019, 07:17 PM   #5
Syxh0wN
Big Clucker
 
Syxh0wN's Avatar
 
Join Date: Nov 2013
Location: San Andreas
Posts: 169
Reputation: 6
Default Re: Iter_Remove

Quote:
Originally Posted by Malandrin View Post
Se não me engano, não é necessário fazer isso para a Vehicle pois ela remove automaticamente, isso serve também para a Player. Posso estar falando merda, mas faz um teste ae.

Ah, e a variável que vem por padrão do YSI é a Vehicle sem o S... Faz um teste com ela e vê se resolve.
Não faz diferença, eu posso usar outro nome na variavel, o problema é que quando eu uso Iter_Remove o servidor trava
Syxh0wN is offline   Reply With Quote
Old 29/12/2019, 07:21 PM   #6
Syxh0wN
Big Clucker
 
Syxh0wN's Avatar
 
Join Date: Nov 2013
Location: San Andreas
Posts: 169
Reputation: 6
Default Re: Iter_Remove

pawn Code:
#if defined MAX_VEHICLES
    #undef MAX_VEHICLES
#define MAX_VEHICLES (500+MAX_PLAYERS)
#endif


new Iterator: Veiculos<MAX_VEHICLES>;

OnGameModeInit()
    return mysql_tquery(mysql, "SELECT * FROM `vehicles`", "LoadVehicles");

LoadVehicles(); public LoadVehicles()
{
    new rows, fields;
    cache_get_row_count(rows);
    cache_get_field_count(fields);

    if(!rows)
        return 1;
   
    new vehicleid;
    for(new j; j < rows; j++)
    {
        vehicleid = CreateVehicle(522, 0, 0, 0, 0, 0, 0, -1);
        DestroyVehicle(vehicleid);

        if(vehicleid >= MAX_VEHICLES)
        {
            printf("Limite de veiculos excedidos.");
            break;
        }

        cache_get_value_name_int(j, "id", VehicleInfo[vehicleid][vID]);
        cache_get_value_name_int(j, "model", VehicleInfo[vehicleid][vModel]);
        cache_get_value_name_int(j, "color0", VehicleInfo[vehicleid][vFirstColor]);
        cache_get_value_name_int(j, "color1", VehicleInfo[vehicleid][vSecondColor]);
        cache_get_value_name_float(j, "pos_x", VehicleInfo[vehicleid][vSpawnPosX]);
        cache_get_value_name_float(j, "pos_y", VehicleInfo[vehicleid][vSpawnPosY]);
        cache_get_value_name_float(j, "pos_z", VehicleInfo[vehicleid][vSpawnPosZ]);
        cache_get_value_name_float(j, "pos_a", VehicleInfo[vehicleid][vSpawnPosA]);

        VehicleInfo[vehicleid][vScript] = CreateVehicle(VehicleInfo[vehicleid][vModel], VehicleInfo[vehicleid][vSpawnPosX], VehicleInfo[vehicleid][vSpawnPosY], VehicleInfo[vehicleid][vSpawnPosZ], VehicleInfo[vehicleid][vSpawnPosA], VehicleInfo[vehicleid][vFirstColor], VehicleInfo[vehicleid][vSecondColor], -1, 0);
       
        Iter_Add(Veiculos, vehicleid);
    }

    return 1;
}

CMD:removercarro(playerid)
{
    new vid = GetPlayerVehicleID(playerid);
    DestroyVehicle(vid);
    Iter_Remove(Veiculos, vid);
    return 1;
}

Quando eu digito o comando /removercarro, o carro some, mas o servidor trava por causa da função Iter_Remove
Syxh0wN is offline   Reply With Quote
Old 29/12/2019, 07:35 PM   #7
Malandrin
Huge Clucker
 
Malandrin's Avatar
 
Join Date: Jun 2018
Posts: 407
Reputation: 23
Default Re: Iter_Remove

Quote:
Originally Posted by Syxh0wN View Post
Não faz diferença, eu posso usar outro nome na variavel, o problema é que quando eu uso Iter_Remove o servidor trava
Mas não é isso que tentei dizer e sim que o YSI vem com algumas varíaveis pré-programadas que no caso a Vehicle é uma delas, esse trabalho que você está tendo para fazer, ela já faz isso automaticamente para você.

Um exemplo do que eu falei com o código e o DEBUG do lado:
Malandrin is offline   Reply With Quote
Old 29/12/2019, 07:40 PM   #8
Syxh0wN
Big Clucker
 
Syxh0wN's Avatar
 
Join Date: Nov 2013
Location: San Andreas
Posts: 169
Reputation: 6
Question Re: Iter_Remove

Quote:
Originally Posted by Malandrin View Post
Mas não é isso que tentei dizer e sim que o YSI vem com algumas varíaveis pré-programadas que no caso a Vehicle é uma delas, esse trabalho que você está tendo para fazer, ela já faz isso automaticamente para você.

Um exemplo do que eu falei com o código e o DEBUG do lado:
Fiz o seguinte, Tirei o Iterator, usei o padrão o 'Vehicle', só que acontece a mesma coisa quando eu uso o DestroyVehicle agora trava

pawn Code:
foreach(new v : Vehicles) if(IsValidVehicle(v) && VehicleInfo[v][vOwner] == Player[playerid][UserID])
        VehicleRemove(v);

Eu tava procurando no forum ta mandando usar O Safe quando tem loop, vou tentar aqui

@Edit não adiantou tbm, af

@Edit2 https://forum.sa-mp.com/showthread.php?t=570884&page=7 aqui tá um relato disso, não estou entendendo muito bem..
Syxh0wN is offline   Reply With Quote
Old 30/12/2019, 01:28 AM   #9
GGsamp
Big Clucker
 
GGsamp's Avatar
 
Join Date: Oct 2018
Location: Salvador - BA
Posts: 100
Reputation: 7
Default Re: Iter_Remove

PHP Code:
nao sei se vai funcionar.

seta aqui por exemplo entrei em tal lugar e ganhei essa setpvar.

SetPVarInt(i"Vamo - Remover"1);

public 
OnPlayerDisconnect(playeridreason)
{
    if(
GetPVarInt(playerid"Vamo - Remover"))
    {
        
//funcao que vai remover quando desconectar.
    
return true;
}

foreach(new 
Sua_Lista)  ex//foreach(new p : Jogadores_Veiculos)
     
Iter_SafeRemove(Vehiclespp); 
GGsamp is online now   Reply With Quote
Old 30/12/2019, 03:48 PM   #10
RiqueP
Gangsta
 
RiqueP's Avatar
 
Join Date: Jan 2014
Posts: 855
Reputation: 58
Default Re: Iter_Remove

PHP Code:
CMD:removercarro(playerid)
{
    new 
vid GetPlayerVehicleID(playerid);

    if(!
vid)
        return 
SendClientMessage(playerid0xFF0000FF"(ERRO) Você não está em um veículo!");

    
DestroyVehicle(vid);
    
Iter_Remove(Veiculosvid);
    return 
1;

SafeRemove é apenas para loops. O correto é usar Iter_Remove mesmo.
__________________
Discord: RiqueP#1666
RiqueP is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Iter_Remove in foreach loop problem. MajesticPTR Scripting Help 2 09/10/2019 06:13 PM
foreach Iter_Remove (client exceeded 'ackslimit') Vizi10 Scripting Help 2 31/07/2019 02:09 PM
Server chrashes after Iter_Remove Gusteakas Scripting Help 0 03/12/2018 02:28 PM


All times are GMT. The time now is 03:09 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.