←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] engfunc - problem z ładowanie...

Zablokowany

  • +
  • -
Sooldierr - zdjęcie Sooldierr 29.03.2020

Przerabiam plugin, który ładuje modele z listy tworzonej w kodzie, na taki, który będzie wczytywać je z pliku tekstowego.

Ładowanie z pliku wygląda ok, ale w momencie, gdy przechodzi do engfunc, aby je zaczytać, to wywala error:

ERROR : Mod_NumForName: models/present/jajkokinder.mdl

Lecz, gdy tą samą listę modeli po prostu na sztywno zdefiniuję w kodzie, to wtedy działa. Nie ma żadnych literówek, wygląda, jakby nie wiem, złe formatowanie? znak końca wiersza windowsowy CR LF, kodowanie UTF-8.

 

Tutaj kod ładowania z ścieżek do modeli z pliku, a następnie w pętli po dynamicznej tablicy ładuję modele:

public plugin_precache()
{
    static sConfigDir[64], sFilePath[64]
    get_configsdir(sConfigDir, sizeof sConfigDir - 1)    
    formatex(sFilePath, sizeof sFilePath - 1, "%s/presents_models.cfg", sConfigDir)
    
    new buff[40];
    new FILE = fopen(sFilePath, "rt");

    while( !feof(FILE) )
    {
        fgets(FILE, buff, sizeof buff - 1);
        if( equali(buff, "") || buff[0] == ';')
            continue;
        model_present_num++;
    }
    fseek(FILE, 0, SEEK_SET);
    model_present = ArrayCreate(sizeof buff, model_present_num);
    
    for (new i = 0; i < model_present_num; i++)
    {
        fgets(FILE, buff, sizeof buff - 1);
        if( equali(buff, "") || buff[0] == ';')
            continue;

        ArrayPushString(model_present, buff)
    }
    fclose(FILE);
    
    for(new i = 0; i < model_present_num; i++)
    {
        ArrayGetString(model_present, i, buff, sizeof buff - 1)
        engfunc(EngFunc_PrecacheModel,buff)
    }
}

W załączniku plik z listą modeli. To problem z kodowaniem tekstu jakiś, czy może źle tablicy używam?
 

Załączone pliki


Użytkownik Sooldierr edytował ten post 29.03.2020 10:25
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 29.03.2020

jesli podejrzewasz biale znaki uzyj trim

 

druga sprawa - skoro uzywasz tablicy dynamicznej to po co najpierw wczytujesz plik i liczysz jego linie?

Po to masz dynamic array zeby tego nie robic, daj mu jakis rozmiar poczatkowy typu 50 czy cos i pchaj w to dane po prostu.

To ile danych masz aktualnie dostaniesz za pomoca ArraySize

sizeof buff - 1

->

charsmax(buf)

wyjdzie na to samo ;)

 

 

a czy sprawdzales sobie jakims log_amx, czy na pewno dobrze Ci wczytuje z pliku linijki?

Odpowiedz

  • +
  • -
Sooldierr - zdjęcie Sooldierr 30.03.2020

Dzięki, funkcja trim załatwiła sprawę, enter psuł sprawę.

Odnośnie charsmax w sumie nie patrzyłem pod tym kątem, w całym pluginie było sizeof .. -1 i nie skupiałem się na tym.

Z tablicą też poprawiłem.

Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 10.04.2020

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany