Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Czytanie map z pliku - pętla


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi w tym temacie

#1 Scorpion Flail

    Wszechobecny

  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:489
  • GG:
  • Steam:steam
Offline

Napisano 28.08.2013 03:00

Witam. Mam taki kod:

new sniperlevel = g_PlayerBadges[id][BADGE_SNIPER];
    
    if ( sniperlevel )
    {
        if ( random_num(1, (4-sniperlevel)) == 1 )
        {
            new weaponName[32];
            new weaponID = get_user_weapon(id);
            
            new file[128];
            new map[32];
    
            get_configsdir( file, 127 )
        
            format(file,127,"%s/odznaki/scout.ini",file)
            
            new line=0,text[128],chars
            
            
            line = read_file(file,line,text,127,chars)
            trim(text);
            get_mapname(map,31);
            trim(text);
            if(equali(map,text))
            {
                ColorChat(id,RED,"Scout zablokowany na tej mapie");
                givenitem = false;            
    
                
                
            }
            
            
            else
            {
                fm_give_item(id, "weapon_scout");
                givenitem = true;
                
                
            }
            
            
            
            
            
            if ( weaponID )
            {
                get_weaponname(weaponID, weaponName, charsmax(weaponName));
                engclient_cmd(id, weaponName);
                
            }
            
            
        
            
            
        }
    }

Obecnie jest tak, że czyta tylko 1-szą mapę z pliku. Na innych robi jakby nie były dodane do pliku.

 

Próbowałem z do/while, jednak wtedy na 1 mapie wykonywało co chciałem, a na kolejnych robilo 2 rzeczy: pokazywało tekst i dawało scouta.

 

Nie wiem już w jaki sposób to zapisać, proszę o pomoc.


  • +
  • -
  • 0

#2 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 28.08.2013 07:50

http://amxx.pl/topic...omosc/?p=555445
  • +
  • -
  • 0

If you can dream it, you can do it.


#3 Scorpion Flail

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:489
  • GG:
  • Steam:steam
Offline

Napisano 28.08.2013 18:23

Tak to teraz wygląda:

  if ( sniperlevel )
    {
        if ( random_num(1, (4-sniperlevel)) == 1 )
        {
            
         new weaponName[32];
        new weaponID = get_user_weapon(id);
        
        
        new g_MapName[32];
        get_mapname(g_MapName, charsmax(g_MapName));
    
        new g_Path[128];
        formatex(g_Path[ get_configsdir(g_Path, charsmax(g_Path)) ], charsmax(g_Path), "/codmod_mapy.ini");
    
        new g_Line[128],
            g_Len;
    for(new i = 0; read_file(g_Path, i, g_Line, charsmax(g_Line), g_Len); i++)
    {
        if(!g_Len || !g_Line[0] || g_Line[0] == ';')
        {
            continue;
        }
        trim(g_Line);
        
        if(equal(g_MapName, g_Line))
        {
            ColorChat(id,RED,"Scout zablokowany na tej mapie");
            givenitem = false;            
    
                
                
        }
            
            
        else
        {
            fm_give_item(id, "weapon_scout");
            givenitem = true;
                
                
        }
            
            
           }
            
            
        if ( weaponID )
        {
            get_weaponname(weaponID, weaponName, charsmax(weaponName));
            engclient_cmd(id, weaponName);
                
        }
            
            
        
            
            
        }
    }

Nie jestem pewien czy tego else miałem też objąć i gdzie dać break: po pokazaniu tekstu czy po wykonaniu else?


  • +
  • -
  • 0

#4 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 28.08.2013 18:31

formatex(g_Path[ get_configsdir(g_Path, charsmax(g_Path)) ], charsmax(g_Path), "/codmod_mapy.ini");
->
formatex(g_Path[ get_configsdir(g_Path, charsmax(g_Path)) ], charsmax(g_Path), "/odznaki/scout.ini");
if(equal(g_MapName, g_Line))
{
	ColorChat(id,RED,"Scout zablokowany na tej mapie");
	givenitem = false;            
}
->
if(equal(g_MapName, g_Line))
{
	ColorChat(id,RED,"Scout zablokowany na tej mapie");
	givenitem = false;      
	break;
}

  • +
  • -
  • 0

If you can dream it, you can do it.


#5 Scorpion Flail

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:489
  • GG:
  • Steam:steam
Offline

Napisano 28.08.2013 19:24

Kod wygląda tak:

if ( sniperlevel )
    {
        if ( random_num(1, (4-sniperlevel)) == 1 )
        {
            
        new weaponName[32];
        new weaponID = get_user_weapon(id);
        
        
        new g_MapName[32];
        get_mapname(g_MapName, charsmax(g_MapName));
    
        new g_Path[128];
        formatex(g_Path[ get_configsdir(g_Path, charsmax(g_Path)) ], charsmax(g_Path), "/odznaki/scout.ini");
    
        new g_Line[128],
            g_Len;
        for(new i = 0; read_file(g_Path, i, g_Line, charsmax(g_Line), g_Len); i++)
        {
            
            
        if(!g_Len || !g_Line[0] || g_Line[0] == ';')
        {
            continue;
        }
        trim(g_Line);
        
        if(equal(g_MapName, g_Line))
        {
            ColorChat(id,RED,"Scout zablokowany na tej mapie");
            givenitem = false;  
            break;
                
        }
            
            
        else
        {
            fm_give_item(id, "weapon_scout");
            givenitem = true;
                
                
        }
            
            
        }
            
            
        if ( weaponID )
        {
            get_weaponname(weaponID, weaponName, charsmax(weaponName));
            engclient_cmd(id, weaponName);
                
        }
            
            
        
            
            
        }
    }

Jest nadal jak było tzn:

na 1. mapie w pliku działa prawidłowo, jednak na kolejnych:

robi 2x rzeczy na raz, tj pokazuje colorchat i daje scouta jednocześnie

 

 

Plik z mapami:

 

Załączony plik  scout.ini   40 bajtów  15 Ilość pobrań

 


  • +
  • -
  • 0

#6 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 19.09.2013 10:47

no bo rak napisales kod zeby to robil :P

 

mapa de_dust

 

a w pliku masz de_dust i inferno wiec przy pierwszym razie pisze ze zablokowany scout ale przy nastepnym juz nie bo grasz dusta a czytasz inferno zrob sobie osobna funkcje do sprawdzania czy dana mapa ma zablokowanego scouta i sprawdzaj to w plugin_init i ustawiaj jakąś zmienna globalną i na jej podstawie zrob warunek


  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych