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

Problem z losowaniem


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

#1 Shio

    Nowy

  • Nowy

Reputacja: -1
Nowy

  • Postów:1
  • Lokalizacja:Mszczonow
Offline

Napisano 10.10.2012 14:52

Witam, ostatnio postanowiłem napisać plgugin, który będzie losował zestawy broni.
Do rzeczy, gdy dodałem tę część do plguinu, która odpowiada za losowanie, zaczeły wyskakiwać mi w compilerze errory których nie potrafie naprawić. Prosił bym aby ktoś naprawił mi kod i napisał co i jak poprawił.

/* Plugin generated by AMXX-Studio */

#include 
#include 
#include 

#define PLUGIN "Standard Tools"
#define VERSION "1.5"
#define AUTHOR "Shio"


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /zestaw", "ZestawBroni")  //rejestrujemy komende /zestaw
	register_clcmd("say /zestawinfo", "ZestawMotd") //rejestrujemy komende motd /zestawinfo
	register_clcmd("say /zestaw", "losowanie", 0); //rejestracja komendy losowania
	register_logevent("pokaz_info",2,"1=Round_Start")

}

public ZestawMotd(id) {
	show_motd(id, "zestaw.txt", "zestaw.txt");  //pokazuje motd z info o zestawach
return PLUGIN_HANDLED;
}
public pokaz_info(id)
{
	client_print(0,print_chat,"[INFO]Aby Zobaczyc jak zestawy mozna wylosowac wpisz /zestawinfo")
}

public ZestawBroni(id) { //daje nam m4a1 deagle i he
	strip_user_weapons (id)
			give_item(id,"weapon_m4a1")
			give_item(id,"ammo_556nato")
			give_item(id,"ammo_556nato")
			give_item(id,"ammo_556nato")
			give_item(id,"weapon_deagle")
			give_item(id,"ammo_50ae")
			give_item(id,"ammo_50ae")
			give_item(id,"ammo_50ae")
			give_item(id,"ammo_50ae")
			give_item(id,"ammo_50ae")
			give_item(id,"ammo_50ae")
			give_item(id,"ammo_50ae")
			give_item(id,"weapon_knife")
				give_item(id, "weapon_hegrenade");
	client_print(id, print_center, "[INFO]Otrzymales M4A1, Deagle oraz He Granade !") //info na sayu
				}
public losowanie(id) //Uruchamia fuknkcje losowania
{
    new rand
    
    rand = random_num(0,4);
    
    switch (rand) { 
        case 0: {  //zestaw pierwszy
           give_item(id, "weapon_m4a1")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "weapon_deagle")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "weapon_knife")
				give_item(id, "weapon_hegrenade");
        }
        case 1: { //zestaw drugi
            give_item(id, "weapon_ak47");    //Case nr 1 = m4a1
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "weapon_knife")
				give_item(id, "weapon_flashbang");
        }
        case 2: { //zestaw trzeci
            give_item(id, "weapon_awp");     //case nr 2 = awp
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "weapon_knife")
				give_item(id, "weapon_flashbang");
        }
        case 3: { //zestaw czwarty
            give_item(id, "weapon_m249");
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "weapon_knife")
				give_item(id, "weapon_hegranade");
        }
        case 4: { //zestaw piaty
            give_item(id, "weapon_scout");
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "weapon_knife")
				give_item(id, "ammo_556nato")
				give_item(id, "weapon_hegranade");
				give_item(id, "weapon_flashbang");
				give_item(id, "weapon_smokegranade");
				
				
        }
    }
}

Mógł by mi ktoś powiedzieć jeszcze jak zrobić zby dawało kevlar ?

Z góry dziękuje :)
  • +
  • -
  • 0

#2 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 10.10.2012 14:59


public losowanie(id) //Uruchamia fuknkcje losowania
{
    new rand
    
    rand = random_num(0,4);
    
    switch (rand) {
        case 0: {  //zestaw pierwszy
           give_item(id, "weapon_m4a1")
            give_item(id, "ammo_556nato")
            give_item(id, "ammo_556nato")
            give_item(id, "ammo_556nato")
            give_item(id, "weapon_deagle")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "weapon_knife")
                give_item(id, "weapon_hegrenade");
        }
        case 1: { //zestaw drugi
            give_item(id, "weapon_ak47");    //Case nr 1 = m4a1
            give_item(id, "ammo_556nato")
            give_item(id, "ammo_556nato")
            give_item(id, "ammo_556nato")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "weapon_knife")
                give_item(id, "weapon_flashbang");
        }
        case 2: { //zestaw trzeci
            give_item(id, "weapon_awp");     //case nr 2 = awp
            give_item(id, "ammo_556nato")
            give_item(id, "ammo_556nato")
            give_item(id, "ammo_556nato")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "weapon_knife")
                give_item(id, "weapon_flashbang");
        }
        case 3: { //zestaw czwarty
            give_item(id, "weapon_m249");
            give_item(id, "ammo_556nato")
            give_item(id, "ammo_556nato")
            give_item(id, "ammo_556nato")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "weapon_knife")
                give_item(id, "weapon_hegranade");
        }
        case 4: { //zestaw piaty
            give_item(id, "weapon_scout");
            give_item(id, "ammo_556nato")
            give_item(id, "ammo_556nato")
            give_item(id, "ammo_556nato")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "ammo_50ae")
            give_item(id, "weapon_knife")
                give_item(id, "ammo_556nato")
                give_item(id, "weapon_hegranade");
                give_item(id, "weapon_flashbang");
                give_item(id, "weapon_smokegranade");
                
                
        }
    }
}


to jest funkcja losowania, a żeby dać kamizelkę to dajesz :


give_item(id, "weapon_kevlar")


albo

set_user_armor(id, get_user_armor(id)+100)


wymaga funp.s : ja nie mam żadnych errorów

Użytkownik PaTrIcKx edytował ten post 10.10.2012 15:01

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#3 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 10.10.2012 15:00

/* Plugin generated by AMXX-Studio */

#include amxmodx
#include fun
#include cstrike

#define PLUGIN "Standard Tools"
#define VERSION "1.5"
#define AUTHOR "Shio"


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /zestaw", "ZestawBroni")  //rejestrujemy komende /zestaw
	register_clcmd("say /zestawinfo", "ZestawMotd") //rejestrujemy komende motd /zestawinfo
	register_clcmd("say /zestaw", "losowanie", 0); //rejestracja komendy losowania
	register_logevent("pokaz_info",2,"1=Round_Start")
	
}

public ZestawMotd(id) {
	show_motd(id, "zestaw.txt", "zestaw.txt");  //pokazuje motd z info o zestawach
	return PLUGIN_HANDLED;
}
public pokaz_info(id)
{
	client_print(0,print_chat,"[INFO]Aby Zobaczyc jak zestawy mozna wylosowac wpisz /zestawinfo")
}

public ZestawBroni(id) { //daje nam m4a1 deagle i he
	strip_user_weapons (id)
	give_item(id,"weapon_m4a1")
	give_item(id,"ammo_556nato")
	give_item(id,"ammo_556nato")
	give_item(id,"ammo_556nato")
	give_item(id,"weapon_deagle")
	give_item(id,"ammo_50ae")
	give_item(id,"ammo_50ae")
	give_item(id,"ammo_50ae")
	give_item(id,"ammo_50ae")
	give_item(id,"ammo_50ae")
	give_item(id,"ammo_50ae")
	give_item(id,"ammo_50ae")
	give_item(id,"weapon_knife")
	give_item(id, "weapon_hegrenade");
	client_print(id, print_center, "[INFO]Otrzymales M4A1, Deagle oraz He Granade !") //info na sayu
}
public losowanie(id) //Uruchamia fuknkcje losowania
{
	new rand
	
	rand = random_num(0,4);
	
	switch (rand) { 
		case 0: {  //zestaw pierwszy
			give_item(id, "weapon_m4a1")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "weapon_deagle")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "weapon_knife")
			give_item(id, "weapon_hegrenade");
		}
		case 1: { //zestaw drugi
			give_item(id, "weapon_ak47");   //Case nr 1 = m4a1
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "weapon_knife")
			give_item(id, "weapon_flashbang");
		}
		case 2: { //zestaw trzeci
			give_item(id, "weapon_awp");     //case nr 2 = awp
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "weapon_knife")
			give_item(id, "weapon_flashbang");
		}
		case 3: { //zestaw czwarty
			give_item(id, "weapon_m249");
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "weapon_knife")
			give_item(id, "weapon_hegranade");
		}
		case 4: { //zestaw piaty
			give_item(id, "weapon_scout");
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_556nato")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "ammo_50ae")
			give_item(id, "weapon_knife")
			give_item(id, "ammo_556nato")
			give_item(id, "weapon_hegranade");
			give_item(id, "weapon_flashbang");
			give_item(id, "weapon_smokegranade");
			
			
		}
	}
}

Proszę nie było nazw załączanych .inc
  • +
  • -
  • 0

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#4 k4x4z5

    Wszechwidzący

  • Użytkownik

Reputacja: 84
Zaawansowany

  • Postów:257
  • Imię:Marcin
  • Lokalizacja:zDaleka
Offline

Napisano 10.10.2012 15:01

give_item(id, "item_assaultsuit")-co do kamizelki
  • +
  • -
  • 0

#5 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 10.10.2012 15:01

nic :D nie mogę dać tych znaków większości i mniejszości... xD html :P

Użytkownik PaTrIcKx edytował ten post 10.10.2012 15:02

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#6 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 10.10.2012 19:01

@up:
<
>

@top: Zacznijmy od indentacji kodu.
Spoiler
Pierwsze 2 linijki usuwamy, nie są nam do niczego potrzebne.

Po nazwach #include należy podać nazwy bibliotek w nawiasie trójkątnym.
Obowiązkowo, podajemy amxmodx, a następnie będziemy załączać biblioteki, z których będziemy korzystać.
Przy okazji dodam nowe linie, by kod był czytelniejszy.

Klamry otwierające ustawiasz raz w tej samej linii, co parametry funkcji, raz pod nią.
Zachowanie dość dziwne, więc ustalę styl, jaki wolę, tj. klamry w tej samej linii.

Spoiler


Teraz dodamy bibliotekę FUN, z której korzystasz, tj za pierwszą linią dodajemy linijkę
#include <fun>


Ewidentnie funkcja losowanie nie ma klamry zamykającej, o czym krzyczy debugger.
Dodajemy ją na samym końcu i… plugin się kompiluje.

Teraz przejdziemy do kodu samego w sobie. Dla przypomnienia, wersja z poprawionymi błędami stylistycznymi i składniowymi:
Spoiler


ZestawMotd :: show_motd (18)
Musimy sprawdzić, czy gracz jest podłączony z serwerem (is_user_connected), aby wyświetlić mu MOTD.
Na czystą logikę, nie będziemy pokazywać MOTD osobie, która np. łączy się dopiero z serwerem, ale wpisała w konsoli tę komendę.

pokaz_info :: ARGS (24)
Event Round_Start jest eventem globalnym i nie przyjmuje argumentów, więc id z argumentu funkcji należy usunąć.

register_clcmd("say /zestaw", "ZestawBroni")  //rejestrujemy komende /zestaw

register_clcmd("say /zestaw", "losowanie", 0); //rejestracja komendy losowania

(10,12) Nie możesz przypisać jednej, identycznej komendzie, dwóch różnych funkcji.

26-45
Spoiler
a następnie linijkę 10. wywalamy z ww. powodu.

W linijce 11
register_clcmd("say /zestaw", "losowanie", 0);
usuwamy zero na końcu, jest ono irracjonalne.

Uzyskujemy kod postaci:
Spoiler


Została nam do sprawdzenia jedynie funkcja losowanie.

	new rand

rand = random_num(0,4);
Używanie random_num przy chęci pozyskania skończonej liczby początkowych liczb naturalnych jest jak polowanie na muchę armatą.
Użycie tej funkcji w tym wypadku nie dość, że wydłuża czas wykonania komendy, to jeszcze zużywa więcej pamięci. Wystarczy nam w zupełności
new rand=random(5);
którego wyniekiem jest pseudolosowe x∈ℕ∩[0;5>

Kolejna sprawa, give_item. NIE MOŻESZ dawać przedmiotu graczowi, jeśli nie jesteś pewien, że gracz ten żyje!
Dlatego dodamy warunek na samym początku funkcji, jeszcze przed deklaracją zmiennej rand i pseudolosowaniem jej wartości:

if(!is_user_alive(id)){
return PLUGIN_HANDLED;
}
Na samym końcu zwracamy PLUGIN_HANDLED i tym samym uzyskujemy kod
Spoiler


Aby dodać kevlar, skorzystaj z funkcji z modułu cstrike: cs_set_user_armor




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

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