func InitializePlayer(int plr) { var i; // Script player owns power crystals if (GetPlayerType(plr) == C4PT_Script) { g_crystal_player = plr; for (i=0; i<GetPlayerCount(C4PT_User); ++i) SetHostility(plr, GetPlayerByIndex(i, C4PT_User), true, true, true); while (GetCrew(plr)) GetCrew(plr)->RemoveObject(); InitPowerCrystals(plr); return true; } if (g_crystal_player != NO_OWNER) SetHostility(g_crystal_player, plr, true, true, true); // First player init base if (!g_was_player_init) { CreateScriptPlayer("POMMES", 0, 0, CSPF_FixedAttributes | CSPF_NoEliminationCheck | CSPF_Invisible); InitBase(plr); g_was_player_init = true; } // Position and materials var crew; for (i=0; crew=GetCrew(plr,i); ++i) { crew->SetPosition(2100+Random(40), 233-10); crew->CreateContents(Shovel); } return true; }
global func FxHitCheckDoCheck(object target, proplist effect) { var obj; // rather search in front of the projectile, since a hit might delete the effect, // and clonks can effectively hide in front of walls. var oldx = target->GetX(); var oldy = target->GetY(); var newx = target->GetX() + target->GetXDir() / 10; var newy = target->GetY() + target->GetYDir() / 10; var dist = Distance(oldx, oldy, newx, newy); var is_human = GetPlayerType(target->GetController()) == C4PT_User; var shooter = effect.shooter; var live = effect.live; if (live) shooter = target; if (dist <= Max(1, Max(Abs(target->GetXDir()), Abs(target->GetYDir()))) * 2) { // We search for objects along the line on which we moved since the last check // and sort by distance (closer first). for (obj in FindObjects(Find_OnLine(oldx, oldy, newx, newy), Find_NoContainer(), Find_Layer(target->GetObjectLayer()), Find_PathFree(target), Sort_Distance(oldx, oldy))) { // Excludes if (!obj) continue; // hit callback of one object might have removed other objects if(obj == target) continue; if(obj == shooter) continue; if (is_human) { if (obj == g_windgen1) continue; if (obj == g_windgen2) continue; if (obj == g_windgen3) continue; if (obj == g_windmill) continue; } // Unlike in hazard, there is no NOFF rule (yet) // CheckEnemy //if(!CheckEnemy(obj,target)) continue; // IsProjectileTarget or Alive will be hit if (obj->~IsProjectileTarget(target, shooter) || obj->GetOCF() & OCF_Alive) { target->~HitObject(obj); if (!target) return; } } } return; }
func InitializePlayer(int plr) { // Players only if (GetPlayerType(plr)!=C4PT_User) return; // Scenario init if (!g_is_initialized) g_is_initialized = DoInit(plr); // Harsh zoom range for (var flag in [PLRZOOM_LimitMax, PLRZOOM_Direct]) SetPlayerZoomByViewRange(plr,400,250,flag); SetPlayerViewLock(plr, true); // Create per-player-counted tools if (g_max_player_num < GetPlayerCount(C4PT_User)) { ++g_max_player_num; for (var obj in FindObjects(Find_ID(Chest))) if (obj.tool_spawn) obj->CreateContents(obj.tool_spawn); }
func InitializePlayer(int plr) { // Players only if (GetPlayerType(plr)!=C4PT_User) return; // Scenario init if (!g_is_initialized) g_is_initialized = DoInit(plr); // Harsh zoom range for (var flag in [PLRZOOM_LimitMax, PLRZOOM_Direct]) SetPlayerZoomByViewRange(plr,400,250,flag); SetPlayerViewLock(plr, true); // Initial join var crew = GetCrew(plr); crew->SetPosition(35 + Random(10) , 1140); crew->SetDir(DIR_Right); crew->CreateContents(Shovel); crew->CreateContents(Hammer); crew->CreateContents(Axe); return true; }
void DialogNewGame() { FormPtr prevForm, frm; UInt16 hitButton; Char tmpString[5]; Char *text; UInt16 x; UInt16 num; // Save previous form prevForm = FrmGetActiveForm(); FrmSetFocus( prevForm, noFocus ); // Init new form frm = FrmInitForm( frmNewGame ); // Set it FrmSetActiveForm(frm); FrmDrawForm(frm); for( x = 0; x < MaxPlayers; x++ ) { tmppref[x].type = GetPlayerType( x ); StrCopy( tmppref[x].hname, pref.player[x].hname ); StrCopy( tmppref[x].aname, pref.player[x].aname ); DrawUserType( x, tmppref[x].type ); NewGameSetPlayerName( fldNGname0+x, x ); } // Fill in WinScore with previous value. if ( pref.winscore > 9999 ) { // Sanity check... pref.winscore = DEFAULT_WINSCORE; } StrIToA( tmpString, pref.winscore ); SetFieldTextFromStr( fld_winscore, tmpString ); // Fill in Opening Roll with previous value. if ( pref.openingroll > pref.winscore || pref.openingroll <= 0 ) { // Sanity check... pref.openingroll = DEFAULT_OPENINGROLL; } StrIToA( tmpString, pref.openingroll ); SetFieldTextFromStr( fld_openingroll, tmpString ); SetFocus( fld_openingroll ); // Set the handler FrmSetEventHandler(frm, DialogNewGameHandleEvent); hitButton = FrmDoDialog(frm); FrmSetFocus( frm, noFocus ); if ( hitButton == btn_OK_frmNewGame ) { /* Get the score needed to win */ pref.winscore = DEFAULT_WINSCORE; text = FldGetTextPtr( GetObjectPtr( fld_winscore ) ); if ( text != NULL ) { num = StrAToI( text ); if( num <= 9999 && num >= 50 ) { pref.winscore = num; } } /* Get the score needed to open game */ pref.openingroll = DEFAULT_OPENINGROLL; text = FldGetTextPtr( GetObjectPtr( fld_openingroll ) ); if ( text != NULL ) { num = StrAToI( text ); if( num <= pref.winscore && num >= 0 ) { pref.openingroll = num; } } pref.totalplayers = 0; for( x = 0; x < MaxPlayers; x++ ) { pref.player[x].type = tmppref[x].type; NewGameGetPlayerName( fldNGname0 + x, x ); StrCopy( pref.player[x].hname, tmppref[x].hname ); StrCopy( pref.player[x].aname, tmppref[x].aname ); if( tmppref[x].type != PlayerNone ) { pref.totalplayers++; } } if( pref.totalplayers > 0 ) { NewGame(); } } // Delete the form, we're not using it FrmDeleteForm(frm); // Restore previous form. if (prevForm) { FrmSetActiveForm(prevForm); } DrawState(); }
func QueryRejectRespawnPlayer(plr) { return GetPlayerType(plr) == C4PT_Script; }
/************************************************************************ VịLH - GetSkillIDFromName - 22/05/2013 Trả vể ID skill ứng với tên skill params: CString: tên skill return: int: id skill *************************************************************************/ int CCharacter::GetSkillIDFromName(const CString& name) { int iSkillID = 0; DWORD dwType = GetPlayerType(); switch (dwType) { case GIAPSI: case GIAPSI2: if (name == L"Tế Huyết Trảm") iSkillID = S_GS_TE_HUYET_TRAM; else if (name == L"Hồi Phong Trảm") iSkillID = S_GS_HOI_PHONG_TRAM; else if (name == L"Hoành Không Trảm") iSkillID = S_GS_HOANH_KHONG_TRAM; else if (name == L"Huyền Băng Trảm") iSkillID = S_GS_HUYEN_BANG_TRAM; else if (name == L"Liên Hoàn Trảm") iSkillID = S_GS_LIEN_HOAN_TRAM; else if (name == L"Thiên Quân Trảm") iSkillID = S_GS_THIEN_QUAN_TRAM; else if (name == L"Khai Sơn Trảm") iSkillID = S_GS_KHAI_SON_TRAM; else if (name == L"Điện Quang Trảm") iSkillID = S_GS_DIEN_QUANG_TRAM; else if (name == L"Tam Đầu Lục Thủ") iSkillID = S_GS_TAM_DAU_LUC_THU; else if (name == L"Hỏa Quang Trảm") iSkillID = S_GS_HOA_QUANG_TRAM; else if (name == L"Lạc Địa Trảm") iSkillID = S_GS_LAC_DIA_TRAM; else if (name == L"Khuynh Thành Nhất Kích") iSkillID = S_GS_KHUYNH_THANH_NHAT_KICH; break; case DAOSI: case DAOSI2: if (name == L"Chưởng Tâm Lôi") iSkillID = S_DS_CHUONG_TAM_LOI; else if (name == L"Hạn Địa Lôi") iSkillID = S_DS_HAN_DIA_LOI; else if (name == L"Phong Vân Lôi Động") iSkillID = S_DS_PHONG_VAN_LOI_DONG; else if (name == L"Lôi Động Cửu Thiên") iSkillID = S_DS_LOI_DONG_CUU_THIEN; else if (name == L"Lưu Tinh Thạch") iSkillID = S_DS_LUU_TINH_THACH; else if (name == L"Thiên Phong Địa Nhận") iSkillID = S_DS_THIEN_PHONG_DIA_NHAN; else if (name == L"Ngũ Nhạc Triều Tông") iSkillID = S_DS_NGU_NHAC_TRIEU_TONG; else if (name == L"Thiên Băng Địa Liệt") iSkillID = S_DS_THIEN_BANG_DIA_LIET; else if (name == L"Huyền Nữ Bổ Thiên") iSkillID = S_DS_HUYEN_NU_BO_THIEN; else if (name == L"Băng Tuyết Đạn") iSkillID = S_DS_BANG_TUYET_DAN; else if (name == L"Thiết Mã Băng Qua") iSkillID = S_DS_THIET_MA_BANG_QUA; else if (name == L"Băng Phong Bạo") iSkillID = S_DS_BANG_PHONG_DAO; else if (name == L"Băng Phong Vạn Lý") iSkillID = S_DS_BANG_PHONG_VAN_LY; else if (name == L"Tích Lịch Hỏa") iSkillID = S_DS_TICH_LICH_HOA; else if (name == L"Phong Lâm Hỏa Sơn") iSkillID = S_DS_PHONG_LAM_HOA_SON; else if (name == L"Thập Phương Liệt Hỏa") iSkillID = S_DS_THAP_PHUONG_LIET_HOA; else if (name == L"Tam Muội Chân Hỏa") iSkillID = S_DS_TAM_MUOI_CHAN_HOA; break; case DINHAN: case DINHAN2: if (name == L"Thôi Thần Chú") iSkillID = S_DN_THOI_THAN_CHU; else if (name == L"Phá Giáp Chú") iSkillID = S_DN_PHA_GIAP_CHU; else if (name == L"Trảm Tâm Chú") iSkillID = S_DN_TRAM_TAM_CHU; else if (name == L"Vạn Cốt Toàn Khô") iSkillID = S_DN_VAN_COT_TOAN_KHO; break; } return iSkillID; }