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

Pomoc z pluginem, wytłumaczenie kilku rzeczy.


  • Zamknięty Temat jest zamknięty
1 odpowiedź w tym temacie

#1 Piotreq183

    Banned

  • Zbanowany

Reputacja: 14
Początkujący

  • Postów:43
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 22.11.2013 20:06

Siemka, kiedyś próbowałem nauczyć się pisać w PAWN, jednak był to słomiany zapał, załapałem jedynie podstawy. Teraz znowu chcę spróbować. Dla treningu napisałem plugin. Jest to ruleta pod serwer z cod modem. Kompilować mi się nie chce. Nie potrafię tego naprawić. Chciałem prosić Was o pomoc, żebyście wyjaśnili co jest nie tak(nie chodzi mi, żeby plugin działał, bo i tak leci do śmietnika, po prostu chcę wiedzieć, jakie błędy popełniłem ;) ) Zarzucam kod SMA:

#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <fun>
#include <cstrike>

#define PLUGIN ""
#define VERSION ""
#define AUTHOR ""

new bool:uzyte[33] = false
new bool:losujacy[33] = false
public plugin_init()
{

    register_plugin("PLUGIN", VERSION, AUTHOR)
    register_clcmd("say /ruletka", "ruletka")
    register_clcmd("say_team /ruletka", "ruletka")
    register_event("HLTV", "reset_bool_uzyte", "a", "1=0", "2=0")
    register_event("DeathMsg", "ustawienie_losujacy_false", "a")
    register_logevent("sprawdzenie_losujacego", 2, "1=Round_Start")
}

public ruletka(id)
{
    new kasa = cs_get_user_money(id)
    new hp = get_user_health(id)
    new dodac_hp = ((hp/100)*20)
    new zabranie_hp = ((hp/100)*35)
    new exp = cod_get_user_level(id)
    new lvl = cod_get_user_level(id)
    new dodany_exp = cod_get_level_xp(lvl+1) - exp
    new odjety_exp = exp - cod_get_level_xp(lvl-1)
    if(uzyte[id]==true)
    {
        client_print(id, print_chat, "juz uzyles ruletki w tej rundzie")
    }
    if(uzyte[id]==false)
    {
        if(kasa < 6000)
        {
            client_print(id, print_chat, "masz za malo kasy")
        }
        
        if(kasa > 5999)
        {
            
            
            uzyte[id]=true
            
            cs_set_user_money(id, kasa - 6000)
            
            switch(random_num(1, 10))
        case 1:
            {
                set_user_health(id, hp+dodac_hp)
                client_print(id, print_chat, "Wylosowales zwiekszenie HP o 20%")
            }
        case 2:
            {
                set_user_health(id, hp - zabranie_hp)
                client_print(id, print_chat, "straciles 35% swojego HP")
            }
        case 3:
            {
                
                cod_give_weapon(id, CSW_AWP)
                cod_give_weapon(id, CSW_M4A1)
                client_print(id, print_chat, "dostajesz AWP i M4 dopoki nie zgineisz")
                
                losujacy[id] = true
            }
        case 4:
            {
                strip_user_weapons(id)
                client_print(id, print_chat, "cos zgubiles :)")
            }
        case 5:
            {
                cs_set_user_money(id, 16000)
                client_print(id, print_chat, "hajs sie sypie")
            }
        case 6:
            {
                new strata = random_num(1, 8000)
                cs_set_user_money(id, kasa - strata)
                client_print(id, print_chat, "straciles %d kasy", strata)
            }
        case 7:
            {
                cod_set_user_xp(id, exp + dodany_exp)
                client_print(id, print_chat, "zdobyles nowy poziom !")
            }
        case 8:
            {
                cod_set_user_xp(id, exp - odjety_exp)
                client_print(id, print_chat, "straciles jeden poziom ")
            }
        case 9:
            {
                set_user_health(id, 0)
                client_print(id, print_chat, "nie zyjesz")
            }
        case 10:
            {
                set_user_godmode(id, 1)
                set_task(8.0, "niesmiertelnosc", .flags="a", 1)
            }
            
        }
    }
}

public reset_bool_uzyte()
{
    new i
    for(i=0;i<33;i++)
    {
        uzyte[i] = false
    }
}



public ustawienie_losujacy_false(zabity)
{
    new zabity = read_data(1)
    losujacy[id] = false
}

public sprawdzenie_losujacego(id)
{
    if(losujacy[id] == false)
    {
        cod_take_weapon(id, CSW_M4A1)
        cod_take_weapon(id, CSW_AWP)
        
    }
}

public niesmiertelnosc(id)
{
    set_user_godmode(id, 1)

 

Oprócz tego co niezbędne, do poprawnego skompilowania pluginu, prosiłbym o jakieś rady na przyszłość które mogą się przydać ;)

Do tego jeszcze 2 pytania.

 

czy to:

    new kasa = cs_get_user_money(id)
    new hp = get_user_health(id)
    new dodac_hp = ((hp/100)*20)
    new zabranie_hp = ((hp/100)*35)
    new exp = cod_get_user_level(id)
    new lvl = cod_get_user_level(id)
    new dodany_exp = cod_get_level_xp(lvl+1) - exp
    new odjety_exp = exp - cod_get_level_xp(lvl-1)

dałem w dobrym miejscu, zastanawiam się czy nie powinno być

public ruletka(id)

TUTAJ

{

 

I drugie pytanie. Czy zmienna użyta w pętli for musi nazywać się "i", czy można użyć inną literę/wyraz, bo jak zauważyłem, to chyba, każdy daje "i" w tej pętli?

Oczywiście za pomoc lecą plusiki ;)

 

@edit

Jeszcze jedno pytanie przypomniało mi się. Uważacie, że jest sens dawać takie nazwy publiców jak ja, chodziło mi o to, żeby od początku wpajać sobie pewne nawyki, żeby np. w przyszłości pisząc duży plugin czy mod nie pogubić się w tych wszystkich publicach i łatwiej było na nich operować ;)


Użytkownik Piotreq183 edytował ten post 22.11.2013 20:09


#2 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 22.11.2013 21:18

co do for to mozesz dac inna zmienna. i jest to najprawdopodobniej integer czyli liczba calkowita (bylo to gdzies na kursie programowania :/)
a co do publicow to mysle ze na poczatek mozna dak dawac. Jednak jest to meczace takie pisanie dlugich nazw. Dlatego ja uzywam nazw angielskich (krotsze), ale nie zawsze.

Co do kody to nie sprawdzalem.
  • +
  • -
  • 1




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

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