[Rezolvat] Problema citire coordonate

Tutoriale scripting, cod si portiuni de cod.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
stanemir.andrei
Membru, skill 0
Membru, skill 0
Posts: 57
Joined: 13 May 2023, 16:29
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Discord: -
Has thanked: 11 times
Been thanked: 4 times

13 May 2023, 16:40

Salut! Sper să nu greșesc cerând ajutorul aici. Am o problemă cu un plugin pe care îl dezvolt. Problema constă în faptul că, după ce salvez coordonatele x, y și z într-un fișier, funcția LoadEntity nu creează entitatea pe baza coordonatelor din fișier. Dacă m-ați putea ajuta, v-aș fi recunoscător.

Code: Select all

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <amxmisc>

new const g_firesprite[] = "sprites/flame.spr";
new const g_firesprite2[] = "sprites/flame2.spr";

new data[512];
new g_szDirectory[512], g_szFilename[512], g_szMap[32];
public plugin_precache()

{
    precache_model(g_firesprite2);
    precache_model(g_firesprite);
}

public plugin_init()
{
    register_touch("info_target", "player", "fwZoneTouch");
    register_clcmd("say /fire", "createFire");
    register_clcmd("say /fire2", "createFire2");
    get_datadir(g_szDirectory, charsmax(g_szDirectory));
    get_mapname(g_szMap, charsmax(g_szMap));
    strtolower(g_szMap);
    get_datadir(g_szDirectory, charsmax(g_szDirectory));
    add(g_szDirectory, charsmax(g_szDirectory), "/DRPOINTS");	
    formatex(g_szFilename, charsmax(g_szFilename), "%s/%s.txt", g_szDirectory, g_szMap);
    if(!dir_exists(g_szDirectory))
    mkdir(g_szDirectory);
    LoadEntity();
    
 
}
public saveEntity(Float:origin[3])
{
            
    new file = fopen( g_szFilename, "a+" );
    if ( file )
    {
        formatex(data,sizeof(data), "%f %f %f",origin[0], origin[1], origin[2]);
        fprintf(file,"%s",data);
        fclose( file );
    }
    
}


public LoadEntity()
{
    new file = fopen(g_szFilename, "rt");
    if (file)
    {
        new XOrigin[10], YOrigin[10], ZOrigin[10];
        new Float:Origin[3];
        new data[256];

        while(!feof(file))
        {
            fgets(file, data, charsmax(data));
            trim(data);
            if(data[0] == EOS || data[0] == ';')
            {
                continue;
            }
            parse(data, "%f %f %f", XOrigin, YOrigin, ZOrigin);

            Origin[0] = str_to_float(XOrigin);
            Origin[1] = str_to_float(YOrigin);
            Origin[2] = str_to_float(ZOrigin);
            createFireEntity2(Float:Origin);

        }

        fclose(file);
            
    }

}

public createFire(clientEntIndex)
{
    new Float:origin[3];
    pev(clientEntIndex, pev_origin, origin);
    createFireEntity(origin);
    saveEntity(origin);
}

public createFire2(clientEntIndex)
{
    new Float:origin[3];
    pev(clientEntIndex, pev_origin, origin);
    createFireEntity2(origin);
    saveEntity(origin);
}



public fwZoneTouch(entity, player, const szClass[], const szModel[])
{
    if (!pev_valid(entity))
        return FMRES_IGNORED;

    new targetName[32];
    entity_get_string(entity, EV_SZ_targetname, targetName, charsmax(targetName));
    if (equal(targetName, g_firesprite, charsmax(targetName)))
    {
   
    }
    else if (equal(targetName, g_firesprite2, charsmax(targetName)))
    {
      
    }

    return FMRES_IGNORED;
}
public createFireEntity(Float:origin[3])
{
    new entity = create_entity("info_target");

    DispatchSpawn(entity);

    engfunc(EngFunc_SetModel, entity, g_firesprite);
    set_pev(entity, pev_solid, SOLID_TRIGGER);
    set_pev(entity, pev_rendermode, kRenderTransAdd);
    set_pev(entity, pev_renderamt, 255.0);
    set_pev(entity, pev_targetname, g_firesprite, 31);

    engfunc(EngFunc_SetOrigin, entity, origin);

    return entity;
}


public createFireEntity2(Float:origin[3])
{
    new entity = create_entity("info_target");

    DispatchSpawn(entity);

    engfunc(EngFunc_SetModel, entity, g_firesprite2);
    set_pev(entity, pev_solid, SOLID_TRIGGER);
    set_pev(entity, pev_rendermode, kRenderTransAdd);
    set_pev(entity, pev_renderamt, 255.0);
    set_pev(entity, pev_targetname, g_firesprite2, 31);

    engfunc(EngFunc_SetOrigin, entity, origin);

    return entity;
}

RoyalServer 2
lexz
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 917
Joined: 02 Nov 2020, 01:57
Detinator Steam: Da
Fond eXtream: 0
Discord: lexzor#0630
Has thanked: 71 times
Been thanked: 136 times

13 May 2023, 17:33

salutari. nu ai folosit corect functia parse din LoadEntity()

Code: Select all


LoadEntity()
{
    new file = fopen(g_szFilename, "rt");
    if (file)
    {
        new XOrigin[10], YOrigin[10], ZOrigin[10];
        new Float:Origin[3];
        new data[256];

        while( fgets(file, data, charsmax(data)))
        {
            if(data[0] == EOS || data[0] == ';')
            {
                continue;
            }
         
            // parse(data, "%f %f %f", XOrigin, YOrigin, ZOrigin);
            parse(data, XOrigin, charsmax(XOrigin), YOrigin, charsmax(YOrigin), ZOrigin, charsmax(ZOrigin))

            Origin[0] = str_to_float(XOrigin);
            Origin[1] = str_to_float(YOrigin);
            Origin[2] = str_to_float(ZOrigin);
            createFireEntity2(Float:Origin);

        }

        fclose(file);       
    }
}
Data viitoare cand mai postezi un plugin/cod pune-l intre code si /code

https://www.amxmodx.org/api/string/parse
stanemir.andrei
Membru, skill 0
Membru, skill 0
Posts: 57
Joined: 13 May 2023, 16:29
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Discord: -
Has thanked: 11 times
Been thanked: 4 times

13 May 2023, 17:51

Boss respect , multumesc mult se poate da TC
User avatar
LondoN eXtream
Membru eXtream
Membru eXtream
Posts: 2755
Joined: 10 Oct 2014, 06:21
Detinator Steam: Da
SteamID: /id/london_extreamcs
Reputatie: Fost scripter eXtreamCS
Fost moderator ajutator
Membru Club eXtreamCS (6 luni)
Fond eXtream: 0
Location: Roman, Neamț
Has thanked: 3 times
Been thanked: 12 times

01 Jun 2023, 15:09

lexz wrote:
13 May 2023, 17:33
salutari. nu ai folosit corect functia parse din LoadEntity()

Code: Select all


LoadEntity()
{
    new file = fopen(g_szFilename, "rt");
    if (file)
    {
        new XOrigin[10], YOrigin[10], ZOrigin[10];
        new Float:Origin[3];
        new data[256];

        while( fgets(file, data, charsmax(data)))
        {
            if(data[0] == EOS || data[0] == ';')
            {
                continue;
            }
         
            // parse(data, "%f %f %f", XOrigin, YOrigin, ZOrigin);
            parse(data, XOrigin, charsmax(XOrigin), YOrigin, charsmax(YOrigin), ZOrigin, charsmax(ZOrigin))

            Origin[0] = str_to_float(XOrigin);
            Origin[1] = str_to_float(YOrigin);
            Origin[2] = str_to_float(ZOrigin);
            createFireEntity2(Float:Origin);

        }

        fclose(file);       
    }
}
Data viitoare cand mai postezi un plugin/cod pune-l intre code si /code

https://www.amxmodx.org/api/string/parse
Functia "createFireEntity2(Float:Origin);" trebuie scoasa din lopp (while). Pune-o inainte de fclose.
Last edited by levin on 01 Jun 2023, 16:14, edited 1 time in total.
Reason: greșit, numa induce lumea în eroare pls
lexz
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 917
Joined: 02 Nov 2020, 01:57
Detinator Steam: Da
Fond eXtream: 0
Discord: lexzor#0630
Has thanked: 71 times
Been thanked: 136 times

01 Jun 2023, 15:15

LondoN eXtream wrote:
01 Jun 2023, 15:09
lexz wrote:
13 May 2023, 17:33
salutari. nu ai folosit corect functia parse din LoadEntity()

Code: Select all


LoadEntity()
{
    new file = fopen(g_szFilename, "rt");
    if (file)
    {
        new XOrigin[10], YOrigin[10], ZOrigin[10];
        new Float:Origin[3];
        new data[256];

        while( fgets(file, data, charsmax(data)))
        {
            if(data[0] == EOS || data[0] == ';')
            {
                continue;
            }
         
            // parse(data, "%f %f %f", XOrigin, YOrigin, ZOrigin);
            parse(data, XOrigin, charsmax(XOrigin), YOrigin, charsmax(YOrigin), ZOrigin, charsmax(ZOrigin))

            Origin[0] = str_to_float(XOrigin);
            Origin[1] = str_to_float(YOrigin);
            Origin[2] = str_to_float(ZOrigin);
            createFireEntity2(Float:Origin);

        }

        fclose(file);       
    }
}
Data viitoare cand mai postezi un plugin/cod pune-l intre code si /code

https://www.amxmodx.org/api/string/parse
Functia "createFireEntity2(Float:Origin);" trebuie scoasa din lopp (while). Pune-o inainte de fclose.
de ce? el vrea sa creeze o entitate pentru fiecare linie cu coordonate din fisier

daca o pui dupa while, functia va crea entitate doar pentru ultima linie citita din fisier deoarece coordonatele sunt salvate in acelasi array


plus ca el a facut cerere pentru citirea din fisier, nu pentru creearea entitatii
Post Reply

Return to “Scripting”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 5 guests