Pluign , pomoc
Raku129
24.06.2010
Napisalem taki plugin , ale to na razie nie koniec go. Powie mi ktos dlaczego jedna wylosowana osoba nie dostaje na poczatku rundy tych rzeczy co dalem?
#include <amxmisc>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <ColorChat>
#define PLUGIN "Granaty"
#define VERSION "1.1"
#define AUTHOR "Raku"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_logevent("moce", 2, "1=Round_Start")
}
public moce()
set_task(1.0, "mocki")
public mocki()
{
new i;
{
i = random_num(1,32)
while(!is_user_alive(i))
give_item(i, "weapon_deagle");
give_item(i, "weapon_m249");
give_item(i, "ammo_50ae");
give_item(i, "ammo_50ae");
give_item(i, "ammo_50ae");
give_item(i, "ammo_50ae");
give_item(i, "ammo_556natobox");
give_item(i, "ammo_556natobox");
set_user_health(i,2000);
ColorChat(i,GREEN, "Zostales VoltaMenem!");
}
}
G[o]Q
24.06.2010
ile slotow masz na serverze
24 czerwiec 2010 - 10:29:
i jak juz cos to tak
24 czerwiec 2010 - 10:29:
i jak juz cos to tak
#include <amxmisc> #include <hamsandwich> #include <fun> #include <cstrike> #include <ColorChat> #define PLUGIN "Granaty" #define VERSION "1.1" #define AUTHOR "Raku" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_logevent("moce", 2, "1=Round_Start") } public moce(){ new id = random_num(1,32) set_task(1.0, "mocki",id) } public mocki(id) { while(!is_user_alive(i)){ give_item(i, "weapon_deagle"); give_item(i, "weapon_m249"); give_item(i, "ammo_50ae"); give_item(i, "ammo_50ae"); give_item(i, "ammo_50ae"); give_item(i, "ammo_50ae"); give_item(i, "ammo_556natobox"); give_item(i, "ammo_556natobox"); set_user_health(i,2000); } ColorChat(i,GREEN, "Zostales VoltaMenem!"); }
Raku129
24.06.2010
Na New Game sprawdzalem , zaraz sprawdze to.
24 czerwiec 2010 - 11:08:
// C:\Documents and Settings\Pawe│\Pulpit\compiler\voltamen.sma(24) : error 017:
undefined symbol "i"
// C:\Documents and Settings\Pawe│\Pulpit\compiler\voltamen.sma(25) : error 017:
undefined symbol "i"
// C:\Documents and Settings\Pawe│\Pulpit\compiler\voltamen.sma(25) : warning 21
5: expression has no effect
// C:\Documents and Settings\Pawe│\Pulpit\compiler\voltamen.sma(25) : error 001:
expected token: ";", but found ")"
// C:\Documents and Settings\Pawe│\Pulpit\compiler\voltamen.sma(25) : error 029:
invalid expression, assumed zero
// C:\Documents and Settings\Pawe│\Pulpit\compiler\voltamen.sma(25) : fatal erro
r 107: too many error messages on one line
//
// Compilation aborted.
// 5 Errors.
// Could not locate output file compiled\voltamen.amx (compile failed).
//
// Compilation Time: 0,14 sec
// ----------------------------------------
24 czerwiec 2010 - 11:08:
// C:\Documents and Settings\Pawe│\Pulpit\compiler\voltamen.sma(24) : error 017:
undefined symbol "i"
// C:\Documents and Settings\Pawe│\Pulpit\compiler\voltamen.sma(25) : error 017:
undefined symbol "i"
// C:\Documents and Settings\Pawe│\Pulpit\compiler\voltamen.sma(25) : warning 21
5: expression has no effect
// C:\Documents and Settings\Pawe│\Pulpit\compiler\voltamen.sma(25) : error 001:
expected token: ";", but found ")"
// C:\Documents and Settings\Pawe│\Pulpit\compiler\voltamen.sma(25) : error 029:
invalid expression, assumed zero
// C:\Documents and Settings\Pawe│\Pulpit\compiler\voltamen.sma(25) : fatal erro
r 107: too many error messages on one line
//
// Compilation aborted.
// 5 Errors.
// Could not locate output file compiled\voltamen.amx (compile failed).
//
// Compilation Time: 0,14 sec
// ----------------------------------------
grankee
24.06.2010
1.while(!is_user_alive(i))
próbujesz dać to wszystko jeśli gracz jest martwy, to jak to ma działać, skoro na początku rundy każdy z reguły żyje...
2.tworzenie taska o id równych id gracza to kiepski pomysł, daj id+1352 (przykładowa losowa liczba, takiej jakiej nikt nigdzie nie użył-taski są widziane poza pluginem), a w funkcji którą task wywołuje od tego id odjąć tę liczbę.
próbujesz dać to wszystko jeśli gracz jest martwy, to jak to ma działać, skoro na początku rundy każdy z reguły żyje...
2.tworzenie taska o id równych id gracza to kiepski pomysł, daj id+1352 (przykładowa losowa liczba, takiej jakiej nikt nigdzie nie użył-taski są widziane poza pluginem), a w funkcji którą task wywołuje od tego id odjąć tę liczbę.
Raku129
24.06.2010
Calkiem kod zmienilem , ale jak sie dostaje voltamena to tez zabija i jest lipa.
#include <amxmisc>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <ColorChat>
#define PLUGIN "VoltaMen"
#define VERSION "1.0"
#define AUTHOR "Raku"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_logevent("mocki", 2, "1=Round_Start")
register_logevent("smierc", 2, "1=Round_Start")
register_cvar("sv_vm_health", "255");
register_cvar("sv_vm_armor", "255");
set_task(1.0, "info")
}
public info()
{
ColorChat(0,GREEN,"[VOLTA-SQ.PL] ^x01W kazdej rundzie jest losowanie na ^x03VoltaMena!")
}
public mocki()
set_task(1.0, "moce")
public moce(i)
{
new zycie = get_cvar_num("sv_vm_health")
new armor = get_cvar_num("sv_vm_armor")
new ilu_losowac = 1
new players[32], num, jest
new bool: wylosowany[33]
get_players(players, num)
if(num >= ilu_losowac)
{
while(jest<ilu_losowac){
new id = players[random_num(0, num)]
if(is_user_connected(id) && is_user_alive(id)){
wylosowany[id] = true;
jest++;
}
}
for(new id=0; id<num; id++){
new i = players[id];
if(wylosowany[i]){
new rand = random_num(1,2);
switch(rand)
{
case 1:
{
set_user_health(i, zycie);
set_user_armor(i, armor);
strip_user_weapons(i);
give_item(i, "weapon_m249")
give_item (i, "ammo_556natobox")
give_item (i, "ammo_556natobox")
give_item (i, "ammo_556natobox")
give_item(i, "weapon_deagle")
give_item(i, "ammo_50ae")
give_item(i, "ammo_50ae")
give_item(i, "ammo_50ae")
give_item(i, "ammo_50ae")
give_item(i, "ammo_50ae")
set_user_gravity(i, 0.50);
ColorChat(id,GREEN,"[VOLTA-SQ.PL] ^x01Zostales ^x03VoltaMenem ^x01, o nie wiarygodnych mocach !")
}
case 2:
{
ColorChat(id,GREEN,"[VOLTA-SQ.PL] ^x01Niestety zgineles , nie zostales ^x03VoltaMenem!")
client_cmd(id, "kill")
}
}
}
}
}
}
sbstn
24.06.2010
Dwa entity?
Popracuj trochę nad czytelnością kodu
EDIT: Tak wogóle, to wiesz, że apropos funkcji info, zostanie ona wykonana raz na start mapy?
Użytkownik sbstn edytował ten post 24.06.2010 21:09
set_user_gravity(i, 0.50)
ColorChat(id,GREEN,"[VOLTA-SQ.PL] ^x01Zostales ^x03VoltaMenem ^x01, o nie wiarygodnych mocach !")
Popracuj trochę nad czytelnością kodu
#include <amxmisc>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <ColorChat>
#define PLUGIN "VoltaMen"
#define VERSION "1.0"
#define AUTHOR "Raku"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_logevent("mocki", 2, "1=Round_Start")
register_logevent("smierc", 2, "1=Round_Start")
register_cvar("sv_vm_health", "255");
register_cvar("sv_vm_armor", "255");
set_task(1.0, "info")
}
public info()
ColorChat(0,GREEN,"[VOLTA-SQ.PL] ^x01W kazdej rundzie jest losowanie na ^x03VoltaMena!")
public mocki()
set_task(1.0, "moce")
public moce(i)
{
new zycie = get_cvar_num("sv_vm_health")
new armor = get_cvar_num("sv_vm_armor")
new ilu_losowac = 1
new players[32], num, jest
new bool: wylosowany[33]
get_players(players, num)
if(num >= ilu_losowac)
{
while(jest<ilu_losowac)
{
new id = players[random_num(0, num)]
if(is_user_connected(id) && is_user_alive(id))
{
wylosowany[id] = true
jest++;
}
}
for(new id=0; id<num; id++)
{
new i = players[id]
if(wylosowany[i])
{
new rand = random_num(1,2);
switch(rand)
{
case 1:
{
set_user_health(i, zycie);
set_user_armor(i, armor);
strip_user_weapons(i);
give_item(i, "weapon_m249")
give_item (i, "ammo_556natobox")
give_item (i, "ammo_556natobox")
give_item (i, "ammo_556natobox")
give_item(i, "weapon_deagle")
give_item(i, "ammo_50ae")
give_item(i, "ammo_50ae")
give_item(i, "ammo_50ae")
give_item(i, "ammo_50ae")
give_item(i, "ammo_50ae")
set_user_gravity(i, 0.50);
ColorChat(id,GREEN,"[VOLTA-SQ.PL] ^x01Zostales ^x03VoltaMenem ^x01, o nie wiarygodnych mocach !")
}
case 2:
{
ColorChat(id,GREEN,"[VOLTA-SQ.PL] ^x01Niestety zgineles , nie zostales ^x03VoltaMenem!")
client_cmd(id, "kill")
}
}
}
}
}
}
EDIT: Tak wogóle, to wiesz, że apropos funkcji info, zostanie ona wykonana raz na start mapy?
Użytkownik sbstn edytował ten post 24.06.2010 21:09
Raku129
24.06.2010
A jak zrobic zeby wiecej razy byla uzyta?
24 czerwiec 2010 - 22:15:
Dalej jest to samo , zostales voltamanem , dostaje moce itp. i kill tez dziala na niego.
24 czerwiec 2010 - 22:15:
Dalej jest to samo , zostales voltamanem , dostaje moce itp. i kill tez dziala na niego.
sbstn
24.06.2010
Ja Tobie nie poprawiałem funkcjonalności pluginu, tylko graficznie poprawiłem
Zmienne - co i jak? - Nieoficjalny polski support AMX Mod X
respawn - Nieoficjalny polski support AMX Mod X
Użytkownik sbstn edytował ten post 24.06.2010 21:31
Stringa [33].A jak zrobic zeby wiecej razy byla uzyta?
Zmienne - co i jak? - Nieoficjalny polski support AMX Mod X
respawn - Nieoficjalny polski support AMX Mod X
Użytkownik sbstn edytował ten post 24.06.2010 21:31
Raku129
24.06.2010
Eh graficzne , ale tego co zrobilem to kompletnie nie wiem , dlaczego zle dziala. Kumpel , scrypter patrzal , wydaje mu sie ze jest dobrze. A zle dziala
grankee
24.06.2010
Poczytaj moje komentarze w kodzie
Co do info to poczytaj jak zapętlić taska ( jest w dziale "tutoriale" o taskach )
Użytkownik grankee edytował ten post 24.06.2010 21:47
#include <amxmisc>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <ColorChat>
#define PLUGIN
#define VERSION
#define AUTHOR
public plugin_init() {
register_plugin("VoltaMen", "1.0","Raku")
register_logevent("mocki", 2, "1=Round_Start")
register_logevent("smierc", 2, "1=Round_Start") // po co Ci to?
register_cvar("sv_vm_health", "255");
register_cvar("sv_vm_armor", "255");
set_task(1.0, "info")
}
public info()
{
ColorChat(0,GREEN,"[VOLTA-SQ.PL] ^x01W kazdej rundzie jest losowanie na ^x03VoltaMena!")
}
public mocki()
set_task(1.0, "moce")
public moce()
{
//Niepotrzebnie tworzysz zmienne, ktore beda uzyte tylko raz, nizej je zastapilem tym, co do nich przypisujesz
//new zycie =
//new armor =
new ilu_losowac = 1 //to w sumie moze zostac, zebys nie szukal tego w kodzie, tylko dla wygody tutaj zmienil
new players[32], num, jest
new bool: wylosowany[33]
get_players(players, num)
if(num >= ilu_losowac)
{
while(jest<ilu_losowac){
new id = players[random_num(0, num-1)]//-1 bo przy ilosci graczy np. 5 ostatni numer tablicy do odwolania sie do niej to 4
if(is_user_connected(id) && is_user_alive(id)&& !wylosowany[id]/*żeby nie wylosowało 2 lub więcej razy tego samego*/){
wylosowany[id] = true;
jest++;
}
}
for(new i=0; i<num; i++){
//new i = players[id];//po co Ci to?
if(wylosowany[players[i]]){
new rand = random_num(1,2);/*tylko, że to da równe szanse na zginięcie co na dostanie rzeczy
//ja bym dał tak:
new rand = random_num(1,2)
switch(rand)
{
case 1..8:
{
//daj rzeczy itd..
}
case 9,10:
{
//zabij
}
}
*/
switch(rand)
{
case 1:
{
set_user_health(players[i], get_cvar_num("sv_vm_health"));
set_user_armor(players[i], get_cvar_num("sv_vm_armor"));
strip_user_weapons(players[i]);
give_item(players[i], "weapon_m249")
give_item (players[i], "ammo_556natobox")
give_item (players[i], "ammo_556natobox")
give_item (players[i], "ammo_556natobox")
give_item(players[i], "weapon_deagle")
give_item(players[i], "ammo_50ae")
give_item(players[i], "ammo_50ae")
give_item(players[i], "ammo_50ae")
give_item(players[i], "ammo_50ae")
give_item(players[i], "ammo_50ae")
set_user_gravity(players[i], 0.50);
ColorChat(players[i],GREEN,"[VOLTA-SQ.PL] ^x01Zostales ^x03VoltaMenem ^x01, o nie wiarygodnych mocach !")
}
case 2:
{
ColorChat(players[i],GREEN,"[VOLTA-SQ.PL] ^x01Niestety zginales , nie zostales ^x03VoltaMenem!")//pisze sie "zginąłeś" a nie "zginęłeś", poprawiłem, bo w oczy kole
client_cmd(players[i], "kill")
// ja bym tu użył user_kill lub user_silentkill
}
}
}
}
}
}
Co do info to poczytaj jak zapętlić taska ( jest w dziale "tutoriale" o taskach )
Użytkownik grankee edytował ten post 24.06.2010 21:47
Raku129
25.06.2010
Potem dalem
new rand = random_num(1,2)
switch(rand)
Nic nie dalo , a to bedzie w koncu dzialac , a nie zabijac na voltamenie? Jak case 1-8 ja chce voltamena w jednym i smierc w drugim.
new rand = random_num(1,2)
switch(rand)
Nic nie dalo , a to bedzie w koncu dzialac , a nie zabijac na voltamenie? Jak case 1-8 ja chce voltamena w jednym i smierc w drugim.
grankee
25.06.2010
Możesz tak zostawić, ja tylko zaproponowałem takie rozwiązanie, bo po Twojemu są takie same szanse na śmierć co na voltamena, a logiczniej byłoby, gdyby szanse były większe żeby dostać volta niż żeby zginąć.
Czy będzie działać? Skompiluj, uruchom, sprawdź.
Czy będzie działać? Skompiluj, uruchom, sprawdź.
Raku129
26.06.2010
Eh dalej to samo , zostaje voltamenem i tez mnie zabija.
26 czerwiec 2010 - 10:48:
Refresz
26 czerwiec 2010 - 10:48:
Refresz
Owner123
26.06.2010
switch(rand)
{
case 1:
{
set_user_health(players[i], get_cvar_num("sv_vm_health"));
set_user_armor(players[i], get_cvar_num("sv_vm_armor"));
strip_user_weapons(players[i]);
give_item(players[i], "weapon_m249")
give_item (players[i], "ammo_556natobox")
give_item (players[i], "ammo_556natobox")
give_item (players[i], "ammo_556natobox")
give_item(players[i], "weapon_deagle")
give_item(players[i], "ammo_50ae")
give_item(players[i], "ammo_50ae")
give_item(players[i], "ammo_50ae")
give_item(players[i], "ammo_50ae")
give_item(players[i], "ammo_50ae")
set_user_gravity(players[i], 0.50);
ColorChat(players[i],GREEN,"[VOLTA-SQ.PL] ^x01Zostales ^x03VoltaMenem ^x01, o nie wiarygodnych mocach !")
break;
}
case 2:
{
ColorChat(players[i],GREEN,"[VOLTA-SQ.PL] ^x01Niestety zginales , nie zostales ^x03VoltaMenem!")//pisze sie "zginąłeś" a nie "zginęłeś", poprawiłem, bo w oczy kole
client_cmd(players[i], "kill")
// ja bym tu użył user_kill lub user_silentkill
}
}
Spróbuj tak.
Raku129
27.06.2010
Dalej niestety nie dziala.
27 czerwiec 2010 - 07:52:
Pogubilem sie , jakby ktos mogl dac calosc poprawiona + opisane bledy bedzie wdzieczny.
27 czerwiec 2010 - 07:52:
Pogubilem sie , jakby ktos mogl dac calosc poprawiona + opisane bledy bedzie wdzieczny.
grankee
27.06.2010
#include <amxmodx>
#include <fun>
public plugin_init() {
register_plugin("VoltaMen", "1.0","Raku")
register_logevent("mocki", 2, "1=Round_Start")
register_cvar("sv_vm_health", "255");
register_cvar("sv_vm_armor", "255");
set_task(1.0, "info")
}
public info()
{
ColorChat(0,GREEN,"[VOLTA-SQ.PL] ^x01W kazdej rundzie jest losowanie na ^x03VoltaMena!")
}
public mocki()
set_task(1.0, "moce")
public moce()
{
new ilu_losowac = 1 //to w sumie moze zostac, zebys nie szukal tego w kodzie, tylko dla wygody tutaj zmienil
new players[32], num, jest
new bool: wylosowany[33]
get_players(players, num)
zapis("Moce")
if(num >= ilu_losowac)
{
zapis("if num>= ilu_losowac")
while(jest<ilu_losowac){
new id = players[random_num(0, num-1)]//-1 bo przy ilosci graczy np. 5 ostatni numer tablicy do odwolania sie do niej to 4
if(is_user_connected(id) && is_user_alive(id)&& !wylosowany[id]/*żeby nie wylosowało 2 lub więcej razy tego samego*/){
zapis("Wylosowany / jest++")
wylosowany[id] = true;
jest++;
}
}
for(new i=0; i<num; i++){
if(wylosowany[players[i]]){
zapis("Wylosowany, losowanie czy dostanie moce czy zdechnie jak pies :>")
new rand = random_num(1,2);//tylko, że to da równe szanse na zginięcie co na dostanie rzeczy
if(rand==1) zapis("Wylosowano, ze dostanie moce, rand=1")
else if(rand==2) zapis("Wylosowane, ze zdechnie jak pies, rand=2")
else zapis("rand jest rozne od 1 i 2")//tak w razie czego
switch(rand)
{
case 1:
{
zapis("gracz dostaje moce")
set_user_health(players[i], get_cvar_num("sv_vm_health"));
set_user_armor(players[i], get_cvar_num("sv_vm_armor"));
strip_user_weapons(players[i]);
give_item(players[i], "weapon_m249")
give_item (players[i], "ammo_556natobox")
give_item (players[i], "ammo_556natobox")
give_item (players[i], "ammo_556natobox")
give_item(players[i], "weapon_deagle")
give_item(players[i], "ammo_50ae")
give_item(players[i], "ammo_50ae")
give_item(players[i], "ammo_50ae")
give_item(players[i], "ammo_50ae")
give_item(players[i], "ammo_50ae")
set_user_gravity(players[i], 0.50);
ColorChat(players[i],GREEN,"[VOLTA-SQ.PL] ^x01Zostales ^x03VoltaMenem ^x01, o nie wiarygodnych mocach !")
}
case 2:
{
zapis("gracz ginie")
ColorChat(players[i],GREEN,"[VOLTA-SQ.PL] ^x01Niestety zginales , nie zostales ^x03VoltaMenem!")//pisze sie "zginąłeś" a nie "zginęłeś", poprawiłem, bo w oczy kole
client_cmd(players[i], "kill")
//ja bym tu użył user_kill lub user_silentkill
}
}
}
}
}
zapis(" ")
zapis(" ")
zapis(" ")
}
zapis(text[])
{
write_file("Voltamen.txt",text,-1)
}
Wrzuć to na serwer niech podziała kilka-kilkanaście rund i daj tu plik Voltamen.txt, który będzie się znajdował w głównym katalogu (cstrike) na serwerze.
Użytkownik grankee edytował ten post 27.06.2010 12:54