PAWN - moje hobby - DavivaD - 08-05-2015
Od jakiegoś czasu interasuję się językiem PAWN z AMXMODX.
AMXMODX jest pluginem METAMODa do CS 1.6 umożliwający pisanie skryptów (pluginów) na serwery CS 1.6.
Ogólnie piasnie jest bardzo proste do nauczenia bo język PAWN jest identyczny do języku C.
Przykładowy Hello World napisany w PAWNie.
Code: #include <core>
main(){
print("Hello World!");
}
A tu skrypt "VIP i SVIP" napisany w PAWNie z includami AMXMODX pisany przeze mnie.
Code: #include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <colorchat>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <engine>
#include <fun>
new const gszPrefix[] = "[VIP]^x01"
new const VIP_FLAG[] = "t" //Flaga Vipa
new const SVIP_FLAG[] = "s" //Flaga SVipa
new const g_Prefix[] = "Vip Chat"
new static PrecacheModels[][] = {
"models/jb_hf/p_crowbar.mdl",
"models/jb_hf/v_crowbar.mdl",
"models/p_knife.mdl",
"models/jb_hf/v_butter.mdl",
"models/jb_hf/p_palkavip.mdl",
"models/jb_hf/v_palkavip.mdl"
}
new const MDL_P_PALKA[] = "models/jb_hf/p_crowbar.mdl";
new const MDL_V_PALKA[] = "models/jb_hf/v_crowbar.mdl";
new const MDL_P_LOM[] = "models/p_knife.mdl";
new const MDL_V_LOM[] = "models/jb_hf/v_butter.mdl";
new Podskok_VIP[33], Podskok_SVIP[33], UserSpam[33], MamFlageVipa[33], MamFlageSvipa[33]
new GetMaxPlayers, PodskokiGr, SPodskokiGr, g_Hudmsg
public plugin_precache()
{
static MDL;
for(MDL=0; MDL<sizeof PrecacheModels; MDL++) engfunc(EngFunc_PrecacheModel, PrecacheModels[MDL]);
}
public plugin_init(){
register_plugin("VIP & SuperVIP", "a", "Author")
register_logevent("Nowa_Runda", 2, "1=Round_Start")
register_forward(FM_CmdStart, "StartRealCMD")
register_event("CurWeapon", "event_modele", "be", "1=1")
RegisterHam(Ham_TakeDamage, "player", "player_damage")
RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1);
register_clcmd("say /vip", "mShowvip")
register_clcmd("say /svip", "mShowsvip")
register_clcmd("say /vips", "pokaz_vip_menu")
register_clcmd("say /vipy", "pokaz_vip_menu")
register_clcmd("say /svipguns", "svipweapons1")
register_clcmd("say_team", "VipChat");
PodskokiGr = register_cvar("vip_max_podskokow", "1")
SPodskokiGr = register_cvar("svip_max_podskokow", "2")
register_message(get_user_msgid("ScoreAttrib"), "Message_ScoreAttrib")
GetMaxPlayers = get_maxplayers()
register_message(get_user_msgid("SayText"),"handleSayText")
g_Hudmsg=CreateHudSyncObj()
register_event("Damage", "damage", "b", "2!0", "3=0", "4!0");
return 0
}
public plugin_end() remove_task(616)
public client_putinserver(id) {
UserSpam[id] = 0
}
public client_connect(id) {
new Name[33]; get_user_name(id, Name, 32)
UserSpam[id] = 0
if(has_flag(id, VIP_FLAG)) {
set_hudmessage(255, 0, 0, 0.01, 0.4, 0, 5.0)
show_hudmessage(0, "Wchodzi VIP: %s", Name)
return HAM_HANDLED
}
else if(has_flag(id, SVIP_FLAG)) {
set_hudmessage(0, 255, 0, 0.01, 0.4, 0, 5.0)
show_hudmessage(0, "Wchodzi SVIP: %s", Name)
}
return HAM_HANDLED
}
public client_disconnect(id) {
new Name[33]; get_user_name(id, Name, 32)
if(has_flag(id, VIP_FLAG)) {
set_hudmessage(255, 0, 0, 0.01, 0.4, 0, 5.0)
show_hudmessage(0, "Wychodzi VIP: %s", Name)
return HAM_HANDLED
}
else if(has_flag(id, SVIP_FLAG)) {
set_hudmessage(0, 255, 0, 0.01, 0.4, 0, 5.0)
show_hudmessage(0, "Wychodzi SVIP: %s", Name)
}
return HAM_HANDLED
}
public Nowa_Runda() {
for(new id = 1; id <= GetMaxPlayers; id++) {
if(is_user_admin(id) && is_user_connected(id) && is_user_alive(id)) {
new nick[32]; get_user_name(id, nick, 31)
if(has_flag(id, VIP_FLAG))
{
fm_set_user_health(id, get_user_health(id) + 50)
fm_set_user_armor(id, 100)
fm_set_nofootsteps(id, 1)
ColorChat(id, GREEN, "%s^x03 %s^x01 Dostales(as) darmowy ekwipunek dla^x03 VIP^x01'a!", gszPrefix, nick)
}
else if(has_flag(id, SVIP_FLAG))
{
if(get_user_team(id)==1){
set_user_footsteps(id,1);
}
fm_set_user_health(id, get_user_health(id) + 100)
fm_set_user_armor(id, 100)
fm_set_nofootsteps(id, 1)
ColorChat(id, GREEN, "%s^x03 %s^x01 Dostales(as) darmowy ekwipunek dla^x03 SVIP^x01'a!", gszPrefix, nick)
}
}
}
return HAM_HANDLED
}
public event_modele(id)
{
switch(get_user_weapon(id))
{
case CSW_KNIFE:
{
switch(get_user_team(id))
{
case 1:
{
if(has_flag(id, VIP_FLAG) && get_user_team(id) == 1)
{
entity_set_string(id, EV_SZ_viewmodel, MDL_V_PALKA);
entity_set_string(id, EV_SZ_weaponmodel, MDL_P_PALKA);
return HAM_HANDLED;
}
else if (has_flag(id, SVIP_FLAG) && get_user_team(id) == 1)
{
entity_set_string(id, EV_SZ_viewmodel, MDL_V_LOM);
entity_set_string(id, EV_SZ_weaponmodel, MDL_P_LOM);
return HAM_HANDLED;
}
}
}
}
}
return HAM_HANDLED;
}
public SpawnedEventPre(id){
if(has_flag(id, SVIP_FLAG) && get_user_team(id) == 2){
if(is_user_alive(id)){
strip_user_weapons(id)
svipweapons1(id)
}
}
}
public player_damage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(this) || !is_user_connected(idinflictor)) return HAM_IGNORED;
if(idattacker != 0 && has_flag(idattacker, VIP_FLAG) && is_user_alive(idattacker) && get_user_team(idattacker) != get_user_team(this))
{
if(get_user_weapon(idattacker) == CSW_KNIFE)
{
SetHamParamFloat(4, damage*1.6);
return HAM_HANDLED;
}
}
else if(idattacker != 0 && has_flag(idattacker, SVIP_FLAG) && is_user_alive(idattacker) && get_user_team(idattacker) != get_user_team(this))
{
if(get_user_weapon(idattacker) == CSW_KNIFE)
{
SetHamParamFloat(4, damage*2.4);
return HAM_HANDLED;
}
}
return HAM_IGNORED;
}
public StartRealCMD(id, uc_handle) {
if(is_user_alive(id) && is_user_connected(id) && is_user_admin(id)) {
new button = get_uc(uc_handle, UC_Buttons)
new oldbutton = get_user_oldbutton(id)
new flags = get_entity_flags(id)
if(has_flag(id, VIP_FLAG))
{
if(((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && Podskok_VIP[id] > 0)) {
Podskok_VIP[id]--
new Float:velocity[3]
entity_get_vector(id,EV_VEC_velocity, velocity)
velocity[2] = random_float(265.0, 285.0)
entity_set_vector(id,EV_VEC_velocity, velocity)
}
else if(flags & FL_ONGROUND) Podskok_VIP[id] = get_pcvar_num(PodskokiGr)
}
if(has_flag(id, SVIP_FLAG))
{
if(((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && Podskok_SVIP[id] > 0)) {
Podskok_SVIP[id]--
new Float:velocity[3]
entity_get_vector(id,EV_VEC_velocity, velocity)
velocity[2] = random_float(265.0, 285.0)
entity_set_vector(id,EV_VEC_velocity, velocity)
}
else if(flags & FL_ONGROUND) Podskok_SVIP[id] = get_pcvar_num(SPodskokiGr)
}
}
else return FMRES_IGNORED
return 0
}
public mShowvip(id)
{
if(!is_user_connected(id)) return PLUGIN_HANDLED;
if(is_user_connected(id))
{
new menu_vipinfo = menu_create("\rCo otrzymuje VIP?", "menu_vip");
menu_setprop(menu_vipinfo, MPROP_TITLE, "Co otrzymuje VIP?^n- Losowo od 40 do 60hp + kamizelke na start!^n- Dodatkowy Skok^n- Baseball (50% wiecej zadawanych obrazen)^n- Darmowe granaty^n- Bonusy w Ruletce^n- I Wiele wiecej!");
menu_additem(menu_vipinfo, "Zobacz pelny opis VIP");
menu_additem(menu_vipinfo, "Jak kupic VIP? - Poradnik");
menu_additem(menu_vipinfo, "Lista VIP Online");
menu_setprop(menu_vipinfo, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu_vipinfo, MPROP_NEXTNAME, "Nastepna strona");
menu_setprop(menu_vipinfo, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu_vipinfo, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu_vipinfo);
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public menu_vip(id, menu, item)
{
if(!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_HANDLED;
if(item != MENU_EXIT && item != MENU_BACK && item != MENU_MORE)
{
switch(item)
{
case 0: show_motd(id, "vip.txt", "Informacje o Vipie")
case 1: show_motd(id, "jakvip.txt", "Jak Kupic VIPa?")
case 2: pokaz_vip_menu(id)
case 9: return PLUGIN_HANDLED;
}
}
return PLUGIN_HANDLED;
}
public mShowsvip(id)
{
if(!is_user_connected(id)) return PLUGIN_HANDLED;
if(is_user_connected(id))
{
new menu_server = menu_create("\rCo otrzymuje SuperVIP?", "menu_svip");
menu_setprop(menu_server, MPROP_TITLE, "Co otrzymuje SuperVIP?^n- Losowo od 190 do 210hp + Kamizelke na start!^n-Trzy skoki^n- Lom (3x wiecej zadawanych obrazen)^n- Granaty^n- Bonusy w Ruletce^n- I Wiele wiecej!");
menu_additem(menu_server, "Zobacz pelny opis SuperVIP");
menu_additem(menu_server, "Jak kupic SuperVIP? - Poradnik");
menu_additem(menu_server, "Lista VIP Online");
menu_setprop(menu_server, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu_server, MPROP_NEXTNAME, "Nastepna strona");
menu_setprop(menu_server, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu_server, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu_server);
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public menu_svip(id, menu, item)
{
if(!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_HANDLED;
if(item != MENU_EXIT && item != MENU_BACK && item != MENU_MORE)
{
switch(item)
{
case 0: show_motd(id, "svip.txt", "Informacje o SVipie")
case 1: show_motd(id, "jakvip.txt", "Jak Kupic VIPa?")
case 2: pokaz_vip_menu(id)
case 9: return PLUGIN_HANDLED;
}
}
return PLUGIN_HANDLED;
}
public pokaz_vip_menu(id) {
new key[128], info[8], Name[33]
new OnlMenu = menu_create("\yLista VIP Online", "SelectVIPOnline")
for(new i = 1; i <= GetMaxPlayers; i++) {
if(is_user_connected(i) && is_user_admin(i) && !is_user_bot(i) && !is_user_hltv(i)) {
MamFlageVipa[i] = 0
MamFlageSvipa[i] = 0
if(has_flag(i, VIP_FLAG)) {
MamFlageSvipa[i] = 6
MamFlageVipa[i] = 9
}
else if(has_flag(i, SVIP_FLAG)) {
MamFlageSvipa[i] = 5
MamFlageVipa[i] = 8
}
if(MamFlageSvipa[i] == 6 && MamFlageVipa[i] == 9 ) {
get_user_name(i, Name, 32)
formatex(info, 7, "%d", i)
formatex(key, 127, "\r%s \d[\yVIP\d]", Name)
menu_additem(OnlMenu, key, info)
}
else if(MamFlageSvipa[i] == 5 && MamFlageVipa[i] == 8 ) {
get_user_name(i, Name, 32)
formatex(info, 7, "%d", i)
formatex(key, 127, "\r%s \d[\ySuperVIP\d]", Name)
menu_additem(OnlMenu, key, info)
}
}
}
menu_setprop(OnlMenu, MPROP_NUMBER_COLOR, "\w")
menu_setprop(OnlMenu, MPROP_BACKNAME, "\yPoprzednia strona")
menu_setprop(OnlMenu, MPROP_NEXTNAME, "\yNastepna strona")
menu_setprop(OnlMenu, MPROP_EXITNAME, "\rWyjscie")
menu_setprop(OnlMenu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, OnlMenu, 0)
return 1
}
public SelectVIPOnline(id, OnlMenu, item) {
new konto, info[8], name[63], callback
menu_item_getinfo(OnlMenu, item, konto, info, 7, name, 63, callback)
new GetID = str_to_num(info)
if(item == MENU_EXIT) {
ColorChat(id, GREEN, "%s Menu^x04 VIP Online^x01 zamkniete.", gszPrefix)
menu_destroy(OnlMenu)
return HAM_HANDLED
}
else if((item == MENU_MORE) || (item == MENU_BACK)) return 0
else {
new SteamID[35]; get_user_authid(GetID, SteamID, 34)
new Name[33]; get_user_name(GetID, Name, 32)
if(is_user_connected(GetID)) {
ColorChat(id, GREEN, "%s Nick:^x03 %s^x01 Steam:^x03 %s^x01 IP:^x03 (Ukryte)^x01 Zyje:^x03 %s", gszPrefix, Name, (has_user_steam(GetID) ? SteamID : "Brak"), (is_user_alive(GetID) ? "Tak" : "Nie"))
AntySpam(id)
pokaz_vip_menu(id)
} else {
ColorChat(id, GREEN, "%s Gracz o nicku:^x03 %s^x01 wyszedl z serwera!", gszPrefix, Name)
pokaz_vip_menu(id)
}
}
return HAM_HANDLED
}
public AntySpam(id) {
UserSpam[id]++
set_task(1.0, "KickOff", id+320)
if(UserSpam[id] > 4) {
new nick[32]; get_user_name(id, nick, 31)
server_cmd("kick %s **** Przestan spamowac! ****", nick)
for(new i=1; i<=10; i++) console_print(id, "**** Przestan spamowac! ****")
}
return 0
}
public Message_ScoreAttrib() {
if(is_user_admin(get_msg_arg_int(1))) set_msg_arg_int(2, ARG_BYTE, is_user_alive(get_msg_arg_int(1)) ? (1<<2) : (1<<0))
}
public handleSayText(msgId,msgDest,msgEnt){
new id = get_msg_arg_int(1);
if(is_user_connected(id) && has_flag(id, VIP_FLAG)){
new szTmp[256],szTmp2[256];
get_msg_arg_string(2,szTmp, charsmax(szTmp))
new szPrefix[64] = "^x04[VIP]";
if(!equal(szTmp,"#Cstrike_Chat_All")){
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2)," ");
add(szTmp2,charsmax(szTmp2),szTmp);
}
else{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2");
}
set_msg_arg_string(2,szTmp2);
}
else if(is_user_connected(id) && has_flag(id, SVIP_FLAG)){
new szTmp[256],szTmp2[256];
get_msg_arg_string(2,szTmp, charsmax(szTmp))
new szPrefix[64] = "^x04[SuperVIP]";
if(!equal(szTmp,"#Cstrike_Chat_All")){
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2)," ");
add(szTmp2,charsmax(szTmp2),szTmp);
}
else{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2");
}
set_msg_arg_string(2,szTmp2);
}
return PLUGIN_CONTINUE;
}
public VipChat(id){
if(has_flag(id, "ts")){
new g_Msg[256],
g_Text[256];
read_args(g_Msg,charsmax(g_Msg));
remove_quotes(g_Msg);
if(g_Msg[0] == '*' && g_Msg[1]){
new g_Name[64];
get_user_name(id,g_Name,charsmax(g_Name));
formatex(g_Text,charsmax(g_Text),"^x01(%s) ^x03%s : ^x04%s",g_Prefix, g_Name, g_Msg[1]);
for(new i=1;i<33;i++){
if(is_user_connected(i) && has_flag(i, "ts"))
ColorChat(i, GREEN, "%s", g_Text);
}
return PLUGIN_HANDLED_MAIN;
}
}
return PLUGIN_CONTINUE;
}
// Bullet Damage
public damage(id){
new attacker=get_user_attacker(id);
new damage=read_data(2);
if(has_flag(id, "ts")){
set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1);
ShowSyncHudMsg(id, g_Hudmsg, "%i^n", damage);
}
if(is_user_connected(attacker) && has_flag(attacker, "ts")){
set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1);
ShowSyncHudMsg(attacker, g_Hudmsg, "%i^n", damage);
}
}
public client_PreThinkVip(id){
entity_set_float(id, EV_FL_fuser2, 0.0);
if(entity_get_int(id, EV_INT_button) & 2){
new flags = entity_get_int(id, EV_INT_flags);
if(flags & FL_WATERJUMP || entity_get_int(id, EV_INT_waterlevel) >= 2 || !(flags & FL_ONGROUND)){
return PLUGIN_CONTINUE;
}
new Float:velocity[3];
entity_get_vector(id, EV_VEC_velocity, velocity);
velocity[2] += 250.0;
entity_set_vector(id, EV_VEC_velocity, velocity);
entity_set_int(id, EV_INT_gaitsequence, 6);
}
return PLUGIN_CONTINUE;
}
public KickOff(id) {
id -= 320
UserSpam[id] = 0
if(task_exists(id+320)) remove_task(id+320)
return HAM_HANDLED
}
stock bool:has_user_steam(id) {
new AuthID[32]; get_user_authid(id, AuthID, 31)
return containi(AuthID, ":") != -1 ? true : false
}
stock fm_get_nofootsteps(index) return pev(index, pev_flTimeStepSound) == 999 ? true : false
stock fm_set_nofootsteps(index, nofootsteps = 0) set_pev(index, pev_flTimeStepSound, nofootsteps ? 999 : 400)
public svipweapons1(id){
if(is_user_connected(id) && cs_get_user_team(id) == CS_TEAM_CT && has_flag(id, SVIP_FLAG))
{
new menu1 = menu_create("\yWybierz Bronie:","menu1")
menu_additem(menu1,"\wOICW","1",0)
menu_additem(menu1,"\wThunderBolt","2",0)
menu_additem(menu1,"\wBalrog-3","3",0)
menu_additem(menu1,"\wBalrog-5","4",0)
menu_additem(menu1,"\wBalrog-11","5",0)
menu_additem(menu1,"\wGatling","6",0)
menu_additem(menu1,"\wBrick Peace V2","7",0)
menu_additem(menu1,"\yBronie Podstawowe","8",0)
menu_setprop(menu1,MPROP_EXIT,MEXIT_ALL)
menu_display(id,menu1,0)
}
}
public menu1(id, menu, item){
if(item==MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED;
}
new data[7], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,6, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1 :{
client_cmd(id,"admin_get_oicw")
svipweapons2(id)
}
case 2 :{
client_cmd(id,"admin_get_thunderbolt")
svipweapons2(id)
}
case 3 :{
client_cmd(id,"admin_get_balrog3")
svipweapons2(id)
}
case 4 :{
client_cmd(id,"admin_get_balrog5")
svipweapons2(id)
}
case 5 :{
client_cmd(id,"admin_get_balrog11")
svipweapons2(id)
}
case 6 :{
client_cmd(id,"admin_get_gatling")
svipweapons2(id)
}
case 7 :{
client_cmd(id,"admin_get_blockar")
svipweapons2(id)
}
case 8 :{
client_cmd(id,"say /guns")
}
}
return PLUGIN_HANDLED;
}
public svipweapons2(id){
if(is_user_connected(id) && cs_get_user_team(id) == CS_TEAM_CT && has_flag(id, SVIP_FLAG))
{
new menu2 = menu_create("\yWybierz Pistolety:","menu2")
menu_additem(menu2,"\wBalrog-1","1",0)
menu_additem(menu2,"\wShooting Star","2",0)
menu_additem(menu2,"\wPistolet Wodny","3",0)
menu_additem(menu2,"\wPortalGun","4",0)
menu_setprop(menu2,MPROP_EXIT,MEXIT_ALL)
menu_display(id,menu2,0)
}
}
public menu2(id, menu, item){
if(item==MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED;
}
new data[6], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1 :{
client_cmd(id,"admin_get_balrog1")
svipweapons3(id)
}
case 2 :{
client_cmd(id,"admin_get_firecracker")
svipweapons3(id)
}
case 3 :{
client_cmd(id,"admin_get_waterpistol")
svipweapons3(id)
}
case 4 :{
client_cmd(id,"admin_get_portal %s", id)
svipweapons3(id)
}
}
return PLUGIN_HANDLED;
}
public svipweapons3(id){
if(is_user_connected(id) && cs_get_user_team(id) == CS_TEAM_CT && has_flag(id, SVIP_FLAG))
{
new menu3 = menu_create("\yWybierz Kosy:","menu3")
menu_additem(menu3,"\wBalrog-9","1",0)
menu_additem(menu3,"\wThanatos-9","2",0)
menu_additem(menu3,"\wDragon Sword","3",0)
menu_setprop(menu3,MPROP_EXIT,MEXIT_ALL)
menu_display(id,menu3,0)
}
}
public menu3(id, menu, item){
if(item==MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED;
}
new data[6], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1 :{
client_cmd(id,"admin_get_balrog9")
give_item(id, "weapon_knife")
}
case 2 :{
client_cmd(id,"admin_get_thanatos9")
give_item(id, "weapon_knife")
}
case 3 :{
client_cmd(id,"admin_get_dragonsword")
give_item(id, "weapon_knife")
}
}
return PLUGIN_HANDLED;
}
RE: PAWN - moje hobby - Emxx52 - 08-05-2015
Ah, damn it. Pawn jest świetny, ale przydałoby się wiedzieć o czym się pisze zanim założy się temat. Ani AMX Mod X, ani Metamod nie jest 'na serwery CS 1.6' (btw, czego się wszyscy uczepili dopisywania tego jeden-sześć do nazwy gry?), nie wyłącznie. Oba funkcjonują powszechnie wokół silnika GoldSrc. Ignorancja polszan 'pasjonujących się' i korzystających z noobskiego 'nieoficjanego supportu amxx.pl' jest dobijająca. Dlatego jeśli chcesz się zająć owymi potężnymi narzędziami na poważnie to polecam zapoznanie się z oficjanym contentem na AlliedModders.
Quote:Ogólnie piasnie jest bardzo proste do nauczenia bo język PAWN jest identyczny do języku C.
Tyle sprzeczności w jednym zdaniu... Po jaką cholerę ktoś tworzyłby nowy język, który jest taki sam jak C, tylko inaczej nazwany? Poza tym skoro 'jest tak prosty jak C' to proszę, pokaż mi jakieś swoje dzieło napisane w C.
Co do Twojego (teoretycznie) pluginu to nie będę go teraz czytał całego i kompilował, by zobaczyć czy działa, ale tak tylko spojrzałem i weź Ty mi powiedz czy na pewno rozumiesz co piszesz: register_plugin("VIP & SuperVIP", "a", "Author")
|